从C ++获取输入的问题

时间:2014-07-03 15:21:48

标签: c++ input output

我正在使用的代码是:

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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