2011-06-14 47 views
2

当我写一个程序,并使用 -如何在C++中清除输入流?

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

如果在键盘上的两个输入之间的空间(前 如果控制台显示:

答:_(等待输入)和我打a a,第一a会去string_var和第二会去string_var2。如何刷新输入流?

+0

我已经使用了功能cin.ignore()和cin.clear无济于事,但我不知道如果我用他们以正确的方式.. – someguy 2011-06-14 04:44:06

+0

@someguy - 我不知道答案,但是有一个陈述'cout <<“B”;'在两者之间执行。 – Mahesh 2011-06-14 04:47:19

+0

我知道,但仍然去第二个string_var2 – someguy 2011-06-14 04:48:02

回答

3

cin >> string_var相反,使用cin.getline(string_var, 256, '\n')你。目前的阅读输入法只能读到第一个空格。使用getline方法将读取用户点击输入时的\ n字符。

+0

好的谢谢。我会用它来代替。 – someguy 2011-06-14 04:55:27

+5

我以为'istream :: getline()'方法只能用于C风格的字符串('char *'):http://www.cplusplus.com/reference/iostream/istream/getline/你想要全局' getline(std :: istream&,std :: string&)'在''http://www.cplusplus.com/reference/string/getline/中,它不需要'streamsize'参数。 – 2011-06-14 05:10:52

+0

@Chris无论哪种方式应该工作。我只是假设string_var是一个char *。 – marchica 2011-06-14 05:27:32

2

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