cin.ignore()

一段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。

你可能感兴趣的:(cin.ignore())