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

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

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

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

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

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

Считывание из бинарного файла и запись данных в две строковых переменные - C++
Мне нужно считать две строки из бинарного файла "input.txt" и запихать их в переменные типа string. Открываю файлfopen("input.txt",...

Считывание бинарного файла - C++
Здравствуйте! Изначально нужно было прочитать почисленно текстовый файл и забить его в массив. Но т.к. это не получилось, решил прочитать...

Считывание из бинарного файла - C++
СЧИТАТЬ ИЗ БИНАРНОГО ФАЙЛА ВСЕ ВЕЩЕСТВЕННЫЕ ЧИСЛА В МАССИВ И ВЫВЕСТИ ЕГО НА ЭКРАН. #include <iostream> #include <fstream> #include...

Считывание бинарного файла - C++
Здравствуйте, Помогите пожалуйста найти проблему, мне нужно вначале записать текст в бинарный файл а затем считать его, записывает...

Считывание структуры из бинарного файла - C++
Привет всем, при считывании структуры одной строкой кода и последующим выводом ее на экран выводятся непонятные символы. подскажите, что...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 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
5417 / 4813 / 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
5417 / 4813 / 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
5417 / 4813 / 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
5417 / 4813 / 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()));
Ну и как т её потом считаешь не зная размера? Размер тоже записывать отдельно надо
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.03.2013, 22:52 #12
Цитата Сообщение от FarStar Посмотреть сообщение
Ну и как т её потом считаешь не зная размера? Размер тоже записывать отдельно надо
Да, если бинарно читать. Но если я её запишу в отдельную строку, то что мешает считать её, например, через getline()? В строке, в файле, будет просто последовательность символов.

Добавлено через 1 минуту
Это отвлечённая тема. Все зависит от конкретики.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2013, 22:52
Привет! Вот еще темы с ответами:

Считывание из бинарного файла в массив_не работает! - C++
у меня есть большая программа, где я работаю с бинарными файлами, содержащими список студентов...так вот, я создала бин файл со...

Считывание строки из бинарного файла в string - C++
Привет всем!! Помогите новичку понять почему происходит ошибка при считывании строки из файла. void LoadFile() { string j; ...

Считывание из бинарного файла и занисение в список - C++
Здравствуйте, уважаемые форумчане. Столкнулся с проблемой считывания из бинарного файла. Только вот не с самим считыванием, а занесением...

Считывание класса с виртуальным наследованием из бинарного файла - C++
Рассмотрим простой пример. Допустим есть класс А, и производный от него класс В. Наследование виртуальное (обязательно). Создадим объект...


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

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

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