На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Потоковая запись в файл. , Borland C++ Builder v.6.0.
    Пусть есть файл, открытый для чтения и записи - и поток fstream.

    Пока пишешь файл от начала до конца - все нормально. Но теперь в самое начало файла нужно дописать строку 8 символов.

    Установка seekg(0) и запись строки той же самой функцией, что работала только что, - происходит ошибка. tellg возвращает -1, как будто поток умирает.

    Помогает после этого только перезапуск программы.

    Как записать данные с помощью fstream в начало файла? ИЛИ другой вариант открыть файл как бинарный - и записать эти 8 байт в начале, не перезатирая эти 8 байт в файле, а подвинув весь файл на 8 байт?
      Это методы для потоков ввода. Для потоков вывода seekp() и tellp(). Если у тебя поток одновременно и на то, и на другое, между разными операциями нужно либо seek()ать, либо clear()ить, иначе вывод после ввода или наоборот будут давать ошибку.
      Двигать данные файлов вперёд-назад нельзя. Они по определению потоковые объекты. Если нужно вставить или удалить что-то, то это только руками: читаешь хвост и пишешь по новому смещению. Если данных много, и весь хвост держать в памяти накладно, лучше через временный файл делать.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0205 ]   [ 16 queries used ]   [ Generated: 26.04.24, 15:02 GMT ]