读入带空格的字符串的两种方法的简单介绍
getline()方法
getline(cin,arry)是<string>中的函数,<iostream>也有,getline()读入遇到\n时会直接将\n读入然后停止
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string str;
while(getline(cin,str))
{
cout<<str<<endl;
}
return 0;
}
结果:
sdsvra aergv aerv
sdsvra aergv aerv
serg segr
serg segr
drgser serbse
drgser serbse
sdrbv sdbs
cin.get()方法可以自己决定读入的长度
char str[200];
while(cin.get(str,10))
{
printf("%s\n",str);
getchar();
}
return 0;
当读入长度为10是,输出结果为
sdsvra aergv aerv
sdsvra ae
gv aerv
serg segr
serg segr
drgser serbse
drgser se
bse
sdrbv sdbs
sdrbv sdb
size=10,只会读取前十位,区别于gatline()方法的是cin.get()会将换行符\n存在缓存区,下次读入还是换行符无法实现循环读入,要想读入的话需要用getchar()吸收换行符\n。
还有一点需要注意的是cin>>读入一行数据时会在缓存区留下\n,执行上面的例子会发现getline()将cin>>n存在缓存区的换行符\n输出了。而cin.get()方法则在cin>>n,因为留在缓存区的换行符无法读入
getline()
5
sdsvra aergv aerv
sdsvra aergv aerv
serg segr
serg segr
drgser serbse
drgser serbse
sdrbv sdbs
用getchar()将换行符去除即可
string str;
int n;
cin>>n;
getchar();
while(getline(cin,str))
{
cout<<str<<endl;
}
结果:
5
sdsvra aergv aerv
sdsvra aergv aerv
serg segr
serg segr
drgser serbse
drgser serbse
sdrbv sdbs