2011-06-14 49 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()這樣的: