好的,快速提問。如何抓住cin中的第一個非空白字符
在C++中,我想忽略空格,所以我知道我需要使用cin,而不是cin.get 因爲'space'是一個char。
但是,我也想只獲取第一個非空白字符,並忽略其他字符,如果用戶輸入多個字符。如果其餘的字符不被忽略,那麼輸入會影響我的其他cin後來在程序
所以我猜我應該使用cin.ignore(),但我也意識到,我不能只需添加一個 參數1000,因爲用戶必須鍵入1000個字符(至少在我測試時)。那麼我怎樣才能得到第一個非空白字符?
好的,快速提問。如何抓住cin中的第一個非空白字符
在C++中,我想忽略空格,所以我知道我需要使用cin,而不是cin.get 因爲'space'是一個char。
但是,我也想只獲取第一個非空白字符,並忽略其他字符,如果用戶輸入多個字符。如果其餘的字符不被忽略,那麼輸入會影響我的其他cin後來在程序
所以我猜我應該使用cin.ignore(),但我也意識到,我不能只需添加一個 參數1000,因爲用戶必須鍵入1000個字符(至少在我測試時)。那麼我怎樣才能得到第一個非空白字符?
第一非空白字符(假設輸入流不爲空)可以通過清除前導空白,然後消費該下一個字符來獲得:
char firstChar = (is >> std::ws).get();
對於清除輸入流的其餘部分,你可以ignore()
所有剩餘的字符,直到下一個新行,是這樣的:
is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
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');