这是代码:
string str;
cin>>str;
cout<<"first input:"<<str<<endl;
getline(cin, str);
cout<<"line input:"<<str<<endl;
结果是 getline 永远不会因用户输入而暂停,因此第二个输出始终为空。
在花了一些时间之后,我意识到在第一次调用“cin>>str”之后,似乎'\n'仍然存储在cin中(使用cin.peek()检查),它立即结束了getline。解决方案将在第一个用法和第二个用法之间再添加一行:
cin.ignore(numeric_limits::max(), '\n');
但是,我仍然不明白,为什么在第一次调用后留下'\n'?istream& operator>> 到底是做什么的?