如果輸入字符串,下面的函數將導致無限循環。使用C++ IO istream讀取的對象導致無限循環
istream & inputFunc(istream &is)
{
int ival;
// read cin and test only for EOF; loop is executed even if there are other IO failures
while (cin >> ival, !cin.eof()) {
if (cin.bad()) // input stream is corrupted; bail out
throw runtime_error("IO stream corrupted");
if (cin.fail()) { // bad input
cerr<< "bad data, try again"; // warn the user
cin.clear(istream::failbit); // reset the stream
continue; // get next input
}
// ok to process ival
cout << "you entered: " << ival << endl;
}
}
在無限循環的以下功能的結果,如果一個字符串被輸入作爲輸入。
輸出:
嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試againbad數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,嘗試再次嘗試數據,
你如何發送EOF信號到你的程序? – rui 2009-12-24 09:21:41