2014-02-08 50 views
0

好的,快速提問。如何抓住cin中的第一個非空白字符

在C++中,我想忽略空格,所以我知道我需要使用cin,而不是cin.get 因爲'space'是一個char。

但是,我也想只獲取第一個非空白字符,並忽略其他字符,如果用戶輸入多個字符。如果其餘的字符不被忽略,那麼輸入會影響我的其他cin後來在程序

所以我猜我應該使用cin.ignore(),但我也意識到,我不能只需添加一個 參數1000,因爲用戶必須鍵入1000個字符(至少在我測試時)。那麼我怎樣才能得到第一個非空白字符?

回答

2

第一非空白字符(假設輸入流不爲空)可以通過清除前導空白,然後消費該下一個字符來獲得:

char firstChar = (is >> std::ws).get(); 

對於清除輸入流的其餘部分,你可以ignore()所有剩餘的字符,直到下一個新行,是這樣的:

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

operator<<,作爲Formatted Input Function,將丟棄前導空白字符,所以你可以這樣做:

char c; 
cin >> c; 

擺脫其餘的可以用std::istream::ignore來完成:

// Ignore everything or up to the first new line character, 
// whichever comes first 
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
相關問題