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

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

Войти
Регистрация
Восстановить пароль
 
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
14.03.2013, 20:12     Запись и считывание из бинарного файла #1
Допустим я реализовываю АТД - контейнер. Там будет функция обновления (Все данные скопировать в файл на жестком дискке, а потом обратно). Тип данных задается шаблонным аргументов. Сами технологии я зная. Проблема с типами. Для встроенных работает как часы. С объектами типа string выходит проблема. Данные копируются в файл, а назад в этот же string выходят непонятные символы.
Мне необходим универсальный интерфейс для данной операции, чтобы пользователь смог передать любой тип и выполнить эти действия.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2013, 20:12     Запись и считывание из бинарного файла
Посмотрите здесь:

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

Добавлено через 1 минуту
Так не пойдёт - объект string это не строка.
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
14.03.2013, 21:21  [ТС]     Запись и считывание из бинарного файла #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Тат не пойдёт - объект string это не строка.
Так как реализовать универсальую функцию для записи объекта в файл и считывании в его?
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 21:22     Запись и считывание из бинарного файла #6
Цитата Сообщение от no_wearines Посмотреть сообщение
универсальую функцию
Универсальную - это для любых типов данных?
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
14.03.2013, 21:23  [ТС]     Запись и считывание из бинарного файла #7
да, для любых
alsav22
5284 / 4803 / 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
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
14.03.2013, 21:31  [ТС]     Запись и считывание из бинарного файла #9
неформатированный ввод/вывод производительнее.
alsav22
5284 / 4803 / 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
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 22:52     Запись и считывание из бинарного файла #12
Цитата Сообщение от FarStar Посмотреть сообщение
Ну и как т её потом считаешь не зная размера? Размер тоже записывать отдельно надо
Да, если бинарно читать. Но если я её запишу в отдельную строку, то что мешает считать её, например, через getline()? В строке, в файле, будет просто последовательность символов.

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

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