我一直在閱讀關於istream :: ignore()here。我認爲我瞭解它的功能的主要思想,但我看到了一些使用此功能的例子accepting only numeric input,我不確定它爲什麼起作用。istream :: ignore()如何工作?
爲什麼此代碼會忽略除數字輸入以外的所有內容?
#include <iostream>
#include <sstream>
#include <limits>
int main()
{
std::istringstream input("1\n"
"some non-numeric input\n"
"2\n");
for(;;) {
int n;
input >> n;
if (input.eof() || input.bad()) {
break;
} else if (input.fail()) {
input.clear(); // unset failbit
input.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // skip bad input
} else {
std::cout << n << '\n';
}
}
}
我原以爲的IStream ::忽略()會忽略任何由一定數量的,直到定界符指定的所有字符..
嗯,它會忽略所有字符,直到找到''\ n''。 –
你最後一句描述了它。它會忽略儘可能多的字符,或者直到找到分隔符。你傳遞一個數字和一個分隔符。 – chris
我鏈接的例子說,它跳過非數字輸入..因此,描述是錯誤的? – Ci3