2010-04-14 6 views
1

У меня есть программа на С ++, которая читает информацию из файла, в котором хранится информация, разделенная на «$$$$». Пример того, как файл выглядит это:C++ обнаружение конца файла

abc
bcd
$$$$
def
$$$$
qwe
gfh
$$$$

Как я могу обнаружить файл закончился, без использования функции EOF()?

Я его установить, как это,

getline(sin,temp)
if (temp=="$$$$")
{
}

После прочтения последнего набора из четырех долларов, как я могу проверить следующую строку, чтобы обеспечить еще один набор данных не начинается, и что файл закончился? Если файл действительно закончился, я планирую использовать булевский флаг для завершения цикла while.

+2

Почему вы не можете использовать eof()? –

ответ

7
while (getline(sin, temp)) 
{ 
    // use temp. 
} 

Вы выйдете из цикла, как только вы закончите файл.

2

Я не уверен, почему вы не можете использовать eof(), но сначала вы можете получить размер файла, а затем прочитать только столько байтов.

+0

его из-за архитектуры моей текущей программы. Я знаю, что могу переделать его, чтобы сделать его лучше, но сейчас у меня нет времени на это, поэтому мне нужно работать с тем, что у меня есть. – xbonez

+0

@xbonez: Я не понимаю, почему использование eof() потребовало бы, чтобы вы перепроектировали свою программу ... –

+0

@xbonez можете рассказать нам, какие ограничения архитектуры у вас есть, которые запрещают использование 'eof()'? – wilhelmtell

Смежные вопросы