我势必扫清我对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,然后结束接收#endifsystem("pause");return 0;
}
输出示例
end