【发布时间】:2020-09-29 06:36:50
【问题描述】:
#include <iostream>
using namespace std;
int main(){
int const size = 10;
char input_1[size];
char input_2[size];
cout << "Enter input 1: " << endl;
cin.get(input_1, size);
cin.get();
cin.clear();
cout << "Enter input 2: " << endl;
cin.get(input_2,size);
cout << "input_2 = " << input_2 << endl;
return 0;
}
输出 1 ~/cplusplus $ ./conundrum.o
输入输入1:
我们
输入输入2:
asd
input_2 = asd
输出 2
~/cplusplus $./conundrum.o
输入输入1:
输入输入2:
输入_2 =
~/cplusplus $
当我输入连续的字符流时,该程序按预期输出。 OUTPUT 1 显示预期输出。但是当我只在第一个输入时按 Enter 时,此代码不会要求输入 input_2 并抛出一个空的 input_2,如 OUTPUT 2 所示。根据我的理解,换行符应该已被 cin.get() 和故障位设置消灭到某些异常状态(在 input_1 中没有存储任何内容之后)应由 cin.clear() 重置,以便为第二个 cin.get(input_2,...) 做好准备。问题出在哪里?
【问题讨论】: