#c
#c
Вопрос:
У меня есть опыт программирования на C #, но я новичок в c .
Как читать файл построчно, используя ниже «для цикла».
for (int i = 0; i < count; i )
{
}
Я нашел этот фрагмент кода, но не смог понять.
for (string line = ""; getline(infile, line); )
{
//do something with the line
}
Комментарии:
1.
getline(infile, line)
читает строку за раз. При использовании в качестве условия «test» (либо вwhile
цикле илиfor
) вы зацикливаете чтение строк до тех пор, пока состояние потока больше не будет хорошим (обычное изменение из-за конца файла).). Таким образом, цикл просто используетgetline()
в качестве условия тестирования и считывает строку каждый раз, когда проверяется предложение test.
Ответ №1:
Как вы знаете for
, цикл выполняется до тех пор, пока не вернется средняя часть false
, которая:
getline(infile, line)
getline
в этом случае возвращает false, если больше нечего читать, поэтому будет зацикливаться на каждой строке файла, предполагая infile
, что открытый файл является fstream.
Ответ №2:
Стандартные потоки в C можно использовать в условиях, чтобы проверить, есть ли у них ошибка или они достигли конца файла.
И std::getline
функция возвращает (ссылку на) поток, переданный в качестве первого аргумента.
Это можно комбинировать, поэтому std::getline
вызов можно использовать в условии, как показано во втором фрагменте кода в вашем вопросе.