C++ getline завершается с ошибкой «Успех» :-(C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ getline завершается с ошибкой «Успех» :-(

Сообщение Anonymous »

Я возвращаюсь к C++ после десяти лет работы с Java, и это задерживает меня уже две недели. Я видел много сообщений с проблемами getline, и это побудило меня добавить много «cout», пытаясь точно найти, что не так. Я узнал о плохих, неудачных и eof-битах, но проблема все еще осталась. getline не заполняет строку и не переходит в цикл while.
Не знаю, имеет ли это значение, но я пишу код на ПК с Win7 в netbeans и компилирую/запускаю на rasberry pi (под управлением raspbian (думаю, Debian)).

Все, что я пытаюсь сделать, это прочитать простой текстовый файл с помощью getline! Должен быть простым (извините за каламбур :-))
Я пробовал создать текстовый файл с окончаниями строк как в Unix, так и в ASCII (0x0A и 0x0D0A) - безрезультатно. Я запускаю программу с тем же идентификатором пользователя, который создал текстовый файл, поэтому проблем с разрешениями нет.

Getline устанавливает бит сбоя (только... не eof), но ошибка сообщает «Успех», и я не получаю никаких данных в «работе».

Вот большая часть класса, вызывающего ошибку, со множеством отладочных аннотаций. «theFile» — это просто fstream (потому что в будущей версии я, возможно, захочу открыть его для вывода). Но здесь, как видно из вывода, я определенно открываю файл с помощью ios::in. «Проблема» возникает с циклом getline (который никогда не вводится) в функции-члене getValue.
Я не включил конструктор, но он устанавливает только несколько флагов в значение false. А вызывающая сторона (MJAppl) просто вызывает MJConfigFile::getValue( "log_dir", false ).

Код: Выделить всё

string MJConfigFile::getValue ( string in_key, bool in_restart ) {
bool   found   = false ;
string work    , ret   ;
int    key_len = in_key.length() , loop_count = 0 ;
//char   workbuf [ 200 ] ;

cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/45650485/c-getline-fails-with-success[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»