cin.get(), cin.getline() , getline(cin,s) 三者的区别
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cin.get(), cin.getline() , getline(cin,s) 三者的区别相关的知识,希望对你有一定的参考价值。
cin.get, cin.getline, getline 三者的区别
cin.getline()
用法:接收一行字符串,可以接收空格并输出,可以控制接受的字符范围
#include <iostream>
using namespace std;
main ()
char m[20];
cin.getline(m,5);
cout<<m<<endl;
输入:jkljkljkl
输出:jklj
接收5个字符到m中,其中最后一个为’\\0’,所以只看到4个字符输出;
如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl
输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf
cin.getline(s,100);
:每次读取一整行并把Enter键生成的换行符抛弃,s必须为字符数组类型,即 char s[100];
延伸:
- cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
- 当第三个参数省略时,系统默认为’\\0’
- 如果将例子中
cin.getline()
改为cin.getline(m,5,'a')
;当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
getline()
getline()
:是C语言的,获取一行字符串
用法:接收一行字符串,可以接收空格并输出,需包含#include<string>
#include<iostream>
#include<string>
using namespace std;
main ()
string str;
getline(cin,str);
cout<<str<<endl;
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl
getline(cin,s)
:接受一个字符串,可以接受空格并输出。
- s必须为字符串类型,即 string s;
- 输出时需要按两次回车键才能显示,第一次按回车表示字符串结束,第二次按回车才开始输出。
gets()
gets(s)
:接受一个字符串,可以接受空格并输出。
-
必须包含头文件
#include<cstring>;
-
s必须为字符数组类型,即
char s[100];
总结
cin.get(),cin.getline()
:是C++的函数cin.get()
:获取一个字符cin.getline()
:获取一行字符串getline(cin,s)
:是C的,获取一行字符串
注意的问题:
cin.getline()
属于istream流,而getline()
属于string流,是不一样的两个函数- 当同时使用
cin>>,getline()
时,需要注意的是,在cin>>
输入流完成之后,getline()
之前,需要通过:str="\\n"; getline(cin,str);
的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。
加油!
感谢!
努力!
以上是关于cin.get(), cin.getline() , getline(cin,s) 三者的区别的主要内容,如果未能解决你的问题,请参考以下文章
cin.get() 和 cin.getline() 之间的区别
转 cincin.get()cin.getline()getline()gets()等函数的用法
c++中 cincin.get()cin.getline()cin.getchar()的区别
C++基础:各种输入方法总结,cincin.get()cin.getline()getline()gets()getchar()