一段C++程序:
#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。