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

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

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

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

07.09.2013, 17:36. Просмотров 345. Ответов 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 так что бы дальнейшие данные не затирались а сдвигались?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 17:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перетирание байтов с использованием seekp + write в бинарных файлах (C++):

Сравнение матриц в бинарных файлах - C++
Добрый вечер, хотел бы задать немного вопросов по своей задачке. Сама задачка: Есть 2 файла, в первом - N матриц, во втором - M...

Замена элементов в бинарных файлах - C++
первая программа позволяет записать ФИО, группу, оценку и дату рождения 3-х студентов в файл TextSharaut.txt , вторая-считать с этого файла...

Все числа, содержащиеся в двух бинарных файлах одновременно, переписать в третий файл - C++
Создать два бинарных файла, все числа, содержащиеся в обоих файлах одновременно, переписать в третий файл. Дополнительных массивов не...

Почему так(комбинации бинарных и не бинарных вводов и выводов)? - C++
#include <string> #include <iostream> #include <fstream> #include <iomanip> using namespace std; int main() { ...

Не работает seekp() - C++
Здорова господа!!! У меня вообщем проблемка я от отрываю файл для редактирования ios::app курсор в конце файла затем делаю seekp(0)...

Seekp() Не слушается - C++
Добрый день . Изучаю C++ по книге . Использую Visual studio 2013. При решении задач возникла трудность с использованием функции...

3
Somebody
2789 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
07.09.2013, 18:14 #2
Само по себе магически ничего сдвинуться не может. Надо сдвинуть - читай всё до конца файла и пиши после вставленного.
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.09.2013, 03:05 #3
Цитата Сообщение от warloc69 Посмотреть сообщение
Вопрос, как использовать file1.write после file1.seekp так что бы дальнейшие данные не затирались а сдвигались?
Никак. Если нужна вставка в файл, сохраняете данные из файла от места вставки до конца файла во временном буфере, перемещаете курсор в позицию вставки, записываете вставляемые данные, записываете содержимое временного буфера.
0
warloc69
78 / 78 / 4
Регистрация: 28.10.2011
Сообщений: 219
20.09.2013, 16:44  [ТС] #4
А можно примерчик если не сложно?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 16:44
Привет! Вот еще темы с ответами:

методы seekg и seekp - C++
void my_work(const char *str, double KV) throw (myError) { fstream File(str, ios::in | ios::out | ios::binary); if(File.is_open()) ...

Разница между seekg() и seekp() - C++
В чём же разница? Вот допустим открыл я файл: fstream file("trans.dat",ios::out|ios::in|ios::binary); Какая разница между...

Некорректная установка seekg и seekp в многострочном файле - C++
Добрый день! Не могу разобраться с мракобесием, которое начинает твориться с seekg и seekp, если в файле появляется переход на следующую...

Различия в использовании seekg и seekp при работе с fstream - C++
Если я использую класс fstream, тогда для перемещения внутри файла без разницы какую функцию использовать (seekg() и seekp())??? ...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
20.09.2013, 16:44
Ответ Создать тему
Опции темы

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