istream &func(istream &in)
{
string data;
while (in >> data, !in.eof()) {
if (in.bad())
throw runtime_error("IO stream corrupted");
if (in.fail()) {
cerr << "bad data, try again" << endl;
in.clear();
in.ignore(200);
continue;
}
cout << data << endl;;
}
//in.clear(istream::eofbit | istream::failbit);
in.clear();
return in;
}
Почему in.clear(istream::eofbit | istream::failbit);
не может восстановить значение cin?iostream clear()
но in.clear
можно сделать.
PS: Я использую эту функцию в main() и использую в качестве ее параметра cin
.
Просто угадайте, вы уверены, что это не 'istream :: badbit', это неудачно? Есть 3 возможных значения, а не два. –
, когда я использую * ctrl-d * для завершения istream, необходимо установить 'eofbit' и' failbit'! – iverson
Что вы подразумеваете под «должен»? Почему не следует устанавливать «badbit»? –