我势必扫清我对c++的各种疑惑,重拾csdn水文之任
结论:cin在获得需要接受的东西之前,对缓冲区里的空格和换行符不会理睬(但是会把它们从缓冲区删去),但如果达到了可以结束接受的时候,空格和换行符都会让cin不再接
收,并且把空格和换行符继续留在缓冲区
但是getline()对于缓冲区里的每一个都会采取相同的标准,空格会接收,\n会自动转换成\0,并结束接收
缓冲区的内容是aaa a\n,getline()会接收空格,并且把\n换成\0,然后结束接收
int main_test_cin_getline(){
char a,b,c,d;
string s,s1,s2;
cin>>a;
getline(cin,s);
cin>>b;
cin>>c;
cin>>d;
cin>>s1;
getline(cin,s2);
cout<<a<<endl;
cout<<"--------------------------"<<endl;
cout<<s;
cout<<endl<<"-----------------------"<<endl;
cout<<b;
cout<<c;
cout<<d;
cout<<endl<<"-------------------------"<<endl;
cout<<s1;
cout<<endl<<"-----------------------------"<<endl;
cout<<s2;
#if 0
结论:cin在获得需要接受的东西之前,对缓冲区里的空格和换行符不会理睬(但是会把它们从缓冲区删去),但如果达到了可以结束接受的时候,空格和换行符都会让cin不再接
收,并且把空格和换行符继续留在缓冲区
但是getline()对于缓冲区里的每一个都会采取相同的标准,空格会接收,\n会自动转换成\0,并结束接收
缓冲区的内容是aaa a\n,getline()会接收空格,并且把\n换成\0,然后结束接收
#endif
system("pause");
return 0;
}
输出示例
end