У меня есть вопрос относительно того, как обрабатывать ошибку при разборе данных из std::istream
, за которой следует установка флага fail
в потоке. Рассмотрим следующий пример:
std::istringstream ss{"foo"};
int bar;
ss >> bar;
if (!ss) {
// now since parsing failed I would like to check if it wasn't double
// otherwise fail
ss.reset(); // is this correct?
double baz;
ss >> baz;
if (!ss) {
// parse error
}
//code for double
}
//code for int
Является ли приведенный выше пример правильным способом обработки таких ошибок?