Я хочу читать из потока, используя std::getline
внутри цикла for.безопасное чтение из потока в цикле for с использованием getline
Поток, который я имею в виду, является классом, унаследованным от std::basic_iostream
.
std::string line; for(;;){ try{ std::getline(myStreamObj, line); if(line != ""){ std::cout << line << std::endl; } } catch(std::ios_base::failure& ex){ std::cout << ex.what() << std::endl; } }
Я хотел бы также проверить на другие условия ошибки, как
eofbit failbit badbit
Но я немного запутался об этом.
Если некоторые из параметров условий, эти три флага выполнены, любое исключение выбрано как std::ios_base::failure
? Как справиться с этими тремя случаями? Должен ли я делать проверки другими способами?
Благодаря AFG
Спасибо за ваш ответ! Я не знал об этом состоянии, поэтому он пригодится. Могу я задать вам еще одну небольшую деталь. Почему исключения здесь не являются хорошим выбором? –
@Abruzzo Множество причин - медленнее, нелегко поддержать возобновление, нужно написать больше кода для обработки ошибок. И большинство людей, читающих ваш код, будут ожидать исключений * not *, которые будут использоваться в этой области, поэтому они найдут код сложнее понять. – 2010-02-16 12:06:18