从c++获取输入的问题

Issue with getting input from C++

本文关键字:问题 输入 获取 c++      更新时间:2023-10-16

我使用的代码是:

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

我相信第一个例子没有提示额外的输入,因为>>运算符不消耗第一个输入末尾的空白(换行符),然后随后的getline()调用消耗换行符并停止寻找更多的输入。

如果我的假设成立,那么我认为对getline()的两次调用应该首先返回一个空字符串,然后它将提示输入

在执行cin>>input之后,新的行字符仍然留在流中,这意味着getline返回一个空字符串。您可以尝试在调用getline之前执行cin.ignore(std::numeric_limits<std::streamsize>::max())cin.ignore()