【发布时间】:2016-12-23 02:14:41
【问题描述】:
这里有两个 cin,据我了解,每个都在缓冲区中留下 '\n',因为它们会跳过空格。
默认情况下,Cin.ignore 只跳过一个字符,因此取出 '\n' 之一。但是,缓冲区中还有一个 '\n',所以我希望 getline 能看到 '\n' 并跳过 getline。
但是,当我运行此代码时,我可以输入 string3。我哪里错了?
#include <iostream>
#include <string>
using namespace std;
int main()
{
string string1, string2, string3;
cout << "String1: ";
cin >> string1;
cout << "String2: ";
cin >> string2;
cin.ignore();
cout << "String3: ";
getline(cin, string3);
return 0;
}
【问题讨论】: