У меня возникают проблемы с инструкцией getline от fstream. это фрагмент из моего кода:getline возвращает пустую строку
boolean_1=true;
while(true)
{
if(boolean_1)
{
//some stuff
}
else
{
save_file.open("save.txt", fstream::in);
//some stuff
save_file.close();
}
mission_file.open(filename, fstream::in);
mission_file.getline(buffer_line, 256);
//some other stuff
boolean_1=false;
save_file.open("save.txt", fstream::out);
//write something
save_file.close();
}
Этот код должен открыть mission_file первый раз, когда он работает, и откройте файл сохранения на следующей итерации. Файл сохранения создается в конце каждого цикла. По крайней мере, он должен работать следующим образом. Потому что в первый раз все работает безупречно, но на следующей итерации «mission_file.getline (buffer_line, 256)»; возвращает пустую строку, что приводит к сбою программы. Кроме того, если boolean_1 запускается как false, цикл работает нормально до следующего.
Я уже проверил наличие требуемых «.txt», и файл mission_file, и save_file возвращают is_open() true.
Вы, кажется, не проверяете, будет ли 'getline' успешным, по-видимому, вы хотите остановиться после достижения последней строки? –
«getline» терпит неудачу только тогда, когда я уже загрузил файл mission_file, выполнил все необходимые действия и затем снова открыл его в начале следующего цикла. Это не сработает, когда я открою его в первый раз, и я пропустил из этого фрагмента код для остановки перед EOF. – Tibor
Это очень помогло бы, если бы ваш образец кода был полным и компилируемым (хотя и минимальным). Прямо сейчас мы видим, что у вас есть переменная, называемая 'mission_file', но вы не показываете, где и как она объявлена, или все соответствующие операции, которые вы выполняете на ней. –