как использовать eof в цикле for с итерацией целого числа c ++ - PullRequest
0 голосов
/ 12 января 2011

это дает мне ошибку сегментации:

for (int i=0; !file.eof();i++)
{
  getline(file,line);
  roughInput.lines[i].split(line);
}

и это не

for (int i=0; i<2;i++)
{
  getline(file,line);
  roughInput.lines[i].split(line);
}

, насколько я понимаю, должно увеличить i на единицу до конца файла, верно?так как я не могу найти много примеров в i-net, есть ли лучшее решение?

1 Ответ

2 голосов
/ 12 января 2011

Ваш цикл, вероятно, выполняется слишком много раз.file.eof() не вернет false до тех пор, пока вы не попытаетесь прочитать, находясь в конце файла.Вы, вероятно, захотите поставить проверку между вызовом getline и split:

    getline(file, line);
    if (!file.eof())
        roughInput.lines[i].split(line);

и соответствующим образом исправить логику цикла.расти roughInput.lines динамически, так что вы не получите ошибку сегмента, если файл длиннее, чем вы ожидаете.

...