我正在使用的代码是:
string input;
cout<<"First line"<<endl;
cin>>input;
cout<<"second line: "<< input << endl;
getline(cin, input);
cout<<"third line: "<< input << endl;
然而,当我输入54时输出是这样的:
First line
>56
second line: 56
third line:
,程序终止,甚至没有要求另一个输入。这很奇怪,因为以下工作按预期工作:
string input;
cout<<"First line"<<endl;
getline(cin, input);
cout<<"second line: "<< input << endl;
getline(cin, input);
cout<<"third line: "<< input << endl;
即。输入和输入输出是:
First line
>56
second line: 56
>45
third line: 45
答案 0 :(得分:0)
我相信第一个示例没有提示输入额外的输入,因为&gt;&gt;运算符不会消耗第一个输入末尾的空格(换行符),然后后续的getline()
调用会消耗该换行符,并停止寻找更多输入。
如果我的假设成立,那么我认为对getline()
的两次调用应首先返回一个空字符串,然后它会提示输入。
答案 1 :(得分:0)
执行cin>>input
后新行字符仍保留在流中,这意味着getline
返回一个空字符串。在致电cin.ignore(std::numeric_limits<std::streamsize>::max())
之前,您可以尝试cin.ignore()
或getline
。