Ошибка C ++ EOF Getline

Я использовал форму, использованную в одном из связанных вопросов. Единственная проблема в том, что я продолжаю добираться до конца файла.

Файл - это fstream, а str - это строка.

Необработанное исключение Исключение Microsoft C ++: std :: ios_base :: failure

while (getline(file, str)) 
{

}

if (cin.bad ()) {// ошибка ввода-вывода} else if (! cin.eof ()) {// ошибка формата (невозможно с getline, но возможно с оператором >>)} else {// ошибка формата (не возможно с getline, но возможно с оператором >>) // или конец файла (не имеет значения)}


person Roo    schedule 27.02.2010    source источник


Ответы (1)


Если вы получаете std::ios_base::failure исключения, это, скорее всего, вызвано тем, что вы (или какой-то код, который вы используете) включили их для вашего файла. По умолчанию они должны быть отключены. Просто для проверки вы можете попробовать отключить их непосредственно перед циклом while, но вам, вероятно, нужно выяснить, что их включает.

file.exceptions(std::ios_base::goodbit);
person CB Bailey    schedule 27.02.2010
comment
Спасибо, не заметил, что в некоторых примерах кода исключения открывающего файла есть raw_data.exceptions (ifstream :: failbit | ifstream :: badbit); - person Roo; 27.02.2010