Название: Вопрос по C++ Отправлено: DStandout от 22 Ноябрь 2011, 19:57 Этот кусок кода выводит последнюю структуру в файле два раза:
Хотя если записать две структуры и посмотреть на файл, там их действительно две. А выводит три. До этого записывается в файл вот таким образом: Собственно вопрос - почему? path - путь к файлу. Сама структура: Если тут всё нормально, и не должно выводить структуру два раза, так и напишите. Буду искать ошибки в вызове. Отправлено: 22 Ноября 2011, 14:52 Разобрался. Тему можно закрывать/удалять Название: Re: Вопрос по C++ Отправлено: CRP от 22 Ноябрь 2011, 21:59 ух ты же и давно же я С+- не видел то...
Название: Re: Вопрос по C++ Отправлено: K i r i L L от 25 Ноябрь 2011, 22:40 Код: while (!in.eof()) { бит in.eof() (признак конца файла) проставляется только после того как он "попытался прочитать и у него не получилось", в отличии от сишного аналога feof(FILE*) - этот ответит true сразу после того как будет прочитан последний байт файла. Код: while (!in.eof()) { p.s. а почему для серриализации структуры в файл делается именно так? Имхо это плохо и наверняка загнётся на сложных типах данных =) По мне так тут логичнее переопределить операторы чтения (>>) и записи(<<) из потока для данной структуры и волшебным образом читать её с помощью in >> myCity; и записывать out << myCity; :) Название: Re: Вопрос по C++ Отправлено: DStandout от 26 Ноябрь 2011, 21:18 2K i r i L L: спасибо, я уже понял, что eof только после неудачной попытки срабатывает.
Ну а почему так записываются структуры - человеческая лень и категорическая нехватка времени в связи с относительной близостью сессии. Это же просто лаба. Ясно, что если бы я писал серьёзную программу, я бы переопределял операторы и ещё много чего бы изменил в остальной части программы, которая не вошла в моё сообщение. Название: Re: Вопрос по C++ Отправлено: K i r i L L от 28 Ноябрь 2011, 01:16 =)
|