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

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

Войти
Регистрация
Восстановить пароль
 
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
#1

Запись и считывание из бинарного файла - C++

14.03.2013, 20:12. Просмотров 635. Ответов 11
Метки нет (Все метки)

Допустим я реализовываю АТД - контейнер. Там будет функция обновления (Все данные скопировать в файл на жестком дискке, а потом обратно). Тип данных задается шаблонным аргументов. Сами технологии я зная. Проблема с типами. Для встроенных работает как часы. С объектами типа string выходит проблема. Данные копируются в файл, а назад в этот же string выходят непонятные символы.
Мне необходим универсальный интерфейс для данной операции, чтобы пользователь смог передать любой тип и выполнить эти действия.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
14.03.2013, 21:15     Запись и считывание из бинарного файла #2
Цитата Сообщение от no_wearines Посмотреть сообщение
Допустим я реализовываю АТД - контейнер. Там будет функция обновления (Все данные скопировать в файл на жестком дискке, а потом обратно). Тип данных задается шаблонным аргументов. Сами технологии я зная. Проблема с типами. Для встроенных работает как часы. С объектами типа string выходит проблема. Данные копируются в файл, а назад в этот же string выходят непонятные символы.
Мне необходим универсальный интерфейс для данной операции, чтобы пользователь смог передать любой тип и выполнить эти действия.
возможно вы считываете методами readfile(цштфзш) а не cin подобными ?
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
14.03.2013, 21:16  [ТС]     Запись и считывание из бинарного файла #3
C++
1
2
3
4
fstream f1;
string s1;
...
f1.read((char *)&s1, sizeof(s1));
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 21:19     Запись и считывание из бинарного файла #4
Покажите, как записываете в файл.

Добавлено через 1 минуту
Так не пойдёт - объект string это не строка.
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
14.03.2013, 21:21  [ТС]     Запись и считывание из бинарного файла #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Тат не пойдёт - объект string это не строка.
Так как реализовать универсальую функцию для записи объекта в файл и считывании в его?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 21:22     Запись и считывание из бинарного файла #6
Цитата Сообщение от no_wearines Посмотреть сообщение
универсальую функцию
Универсальную - это для любых типов данных?
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
14.03.2013, 21:23  [ТС]     Запись и считывание из бинарного файла #7
да, для любых
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 21:28     Запись и считывание из бинарного файла #8
Записать string можно так:
C++
1
2
3
4
5
 
fstream f1;
string s1;
...
f1.write(s1.c_str(), s1.size()));
Добавлено через 1 минуту
По моему, наиболее универсальные это >> и <<.
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
14.03.2013, 21:31  [ТС]     Запись и считывание из бинарного файла #9
неформатированный ввод/вывод производительнее.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 22:40     Запись и считывание из бинарного файла #10
Тут приходится выбирать: или универсальность, или производительность.
FarStar
Заблокирован
14.03.2013, 22:43     Запись и считывание из бинарного файла #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Записать string можно так:
C++
1
2
3
4
fstream f1;
string s1;
...
f1.write(s1.c_str(), s1.size()));
Ну и как т её потом считаешь не зная размера? Размер тоже записывать отдельно надо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2013, 22:52     Запись и считывание из бинарного файла
Еще ссылки по теме:
C++ Считывание из бинарного файла и занисение в список
Считывание из бинарного файла в массив_не работает! C++
Считывание класса с виртуальным наследованием из бинарного файла C++
Считывание из бинарного файла в структуру с последующим выводом C++
C++ Запись бинарного файла

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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 22:52     Запись и считывание из бинарного файла #12
Цитата Сообщение от FarStar Посмотреть сообщение
Ну и как т её потом считаешь не зная размера? Размер тоже записывать отдельно надо
Да, если бинарно читать. Но если я её запишу в отдельную строку, то что мешает считать её, например, через getline()? В строке, в файле, будет просто последовательность символов.

Добавлено через 1 минуту
Это отвлечённая тема. Все зависит от конкретики.
Yandex
Объявления
14.03.2013, 22:52     Запись и считывание из бинарного файла
Ответ Создать тему
Опции темы

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