清除CIN缓冲区之前另一输入请求,C ++(Clear the cin buffer before

2019-10-20 03:49发布

我有以下代码:

int choice = 0;
char st1[N];

cout << "enter choice" <<endl;
cin >> choice;

cout << "enter sentence" << endl;
cin.get(st1, N-1);

前往cin.get线,无论输入什么的时候,它会读取\ 0焦炭引入ST1 [0],就是这样。

我认为它是与最新的CIN(进入选择变量)。

如何从用户获得新的输入之前我“干净”的CIN缓冲区? 如果可能的话。

谢谢

Answer 1:

您可以使用不理砸从缓冲区中的换行符(如换行分隔符为前降X字符)。 提取并提取分隔符时,忽略停止。

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

同时相关: 为什么我们称之为读取输入后cin.clear()和cin.ignore()?



Answer 2:

你总是可以尝试使用cin.sync()



Answer 3:

getchar()cin >> choice; 。 这将消耗\n从输入缓冲器。

由于choice的类型为int ,将\n在缓冲区遗留下来的,并采取了字符串输入的时候,这个\n遇到,并停止服用输入那里。



文章来源: Clear the cin buffer before another input request, c++
标签: c++ input cin