Приведенная ниже функция приводит к бесконечному циклу , если в качестве ввода введена строка.
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;
}
}
Приведенная ниже функция приводит к бесконечному циклу , если в качестве ввода введена строка.
OUTPUT :
попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные , попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте еще раз плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные, попробуйте снова плохие данные,