Правильная обработка потока не удалась () - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть вопрос относительно того, как обрабатывать ошибку при разборе данных из 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

Является ли приведенный выше пример правильным способом обработки таких ошибок?

...