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];
char cc[100];
gets(cc);
cout << cc;
总结
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()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。
加油!
感谢!
努力!
更多推荐
所有评论(0)