Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
warloc69
78 / 78 / 4
Регистрация: 28.10.2011
Сообщений: 219
#1

перетирание байтов с использованием seekp + write в бинарных файлах - C++

07.09.2013, 17:36. Просмотров 328. Ответов 3
Метки нет (Все метки)

Привет, возник вопрос с записью бинарных файлов.
пишу в файл данные таким кодом :
C++
1
2
3
4
5
6
7
8
9
10
ofstream file1;    
file1.open("file.bin",ios::out|ios::binary|ios::trunc);
    int intVar =156;
    float floatVar  =-34.995;
    long longVar = 10;
    file1.write((char*)&intVar,sizeof(intVar));
    file1.write((char*)&floatVar,sizeof(floatVar));
    file1.seekp(sizeof(int));
    file1.write((char*)&longVar,sizeof(longVar));
file1.close();
читаю из файла таким кодом:
C++
1
2
3
4
5
6
7
8
ifstream file;
file.open("file.bin",ios::in|ios::binary);
    int intVar;
    float floatVar;
    long longVar;
    file.read((char*)&intVar,sizeof(int));
    file.read((char*)&longVar,sizeof(long));
    file.read((char*)&floatVar,sizeof(float));
Ожидаемый результат : после использования все переменный нормально инициализированы согласно порядку записи.

Полученный результат :
1) записали intVar , floatVar
2) с помощью file1.seekp(sizeof(int)); установили курсор на запись в файле после intVar
3) записали longVar
4) floatVar затёрлось longVar.

Вопрос, как использовать file1.write после file1.seekp так что бы дальнейшие данные не затирались а сдвигались?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 17:36     перетирание байтов с использованием seekp + write в бинарных файлах
Посмотрите здесь:

Какие различия у функций seekg и seekp для работы с файлами? C++
C++ Разница между seekg() и seekp()
C++ ios::app не позволяет работать с seekp() или Update файла без удаления в нем информации при его октрытии
методы seekg и seekp C++
C++ Чтение бинарных файлов
Запись бинарных файлов C++
Не работает seekp() C++
Seekp() Не слушается C++
C++ Почему так(комбинации бинарных и не бинарных вводов и выводов)?
C++ Различия в использовании seekg и seekp при работе с fstream
C++ Сравнение матриц в бинарных файлах
C++ О кодировке бинарных файлов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
07.09.2013, 18:14     перетирание байтов с использованием seekp + write в бинарных файлах #2
Само по себе магически ничего сдвинуться не может. Надо сдвинуть - читай всё до конца файла и пиши после вставленного.
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.09.2013, 03:05     перетирание байтов с использованием seekp + write в бинарных файлах #3
Цитата Сообщение от warloc69 Посмотреть сообщение
Вопрос, как использовать file1.write после file1.seekp так что бы дальнейшие данные не затирались а сдвигались?
Никак. Если нужна вставка в файл, сохраняете данные из файла от места вставки до конца файла во временном буфере, перемещаете курсор в позицию вставки, записываете вставляемые данные, записываете содержимое временного буфера.
warloc69
78 / 78 / 4
Регистрация: 28.10.2011
Сообщений: 219
20.09.2013, 16:44  [ТС]     перетирание байтов с использованием seekp + write в бинарных файлах #4
А можно примерчик если не сложно?
Yandex
Объявления
20.09.2013, 16:44     перетирание байтов с использованием seekp + write в бинарных файлах
Ответ Создать тему
Опции темы

Текущее время: 18:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru