#include <iostream>
#include <string>
using namespace std;
int main( )
{
string s;
cin >> s;
string s2;
//cin.ignore();
getline(cin, s2);
cout << "s2:" << s2 << endl;
return 0;
}
如果不加cin.ignore();这行,s2将不会被输入。原因是缓冲区每次结尾的时候还有\n,而getline()一开始读的时候认为已经结束,就返回空行。
原型:is.ignore(size, delim)
读并忽略至多 size 个字符,直到遇到 delim,但不包括 delim。默认情况下,size 是 1 而 delim 是文件结束符。
所以要想正常输入一行到s2,必须加入cin.ignore();,表示忽略了\n。