如何在c ++中清除输入流?

时间:2011-06-14 04:42:30

标签: c++ input buffer flush

当我编写程序时,使用 -

cout << "A:"; 
cin >> string_var; 
cout << "B"; 
cin >> string_var2; 

如果键盘上的两个输入之间有空格(例如, 如果控制台显示:

A:_(等待输入)并输入a a,第一个a将转到string_var,第二个转到string_var2。如何刷新输入流?

2 个答案:

答案 0 :(得分:3)

而不是cin >> string_var,请使用cin.getline(string_var, 256, '\n')。您当前的读取输入方法仅读取到第一个空格。使用getline方法将读取\ n字符,即用户点击进入时的字符。

答案 1 :(得分:2)

您可以像这样使用cin.get()

cout << "A: "; 
cin >> string_var; 
// clear remaining stream input
while(cin.get() != '\n'); 

cout << "B: "; 
cin >> string_var2;