10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
1 | |
Как записать объект с полем типа std::string в бинарном виде в файл и считать его обратно?07.10.2013, 20:23. Показов 3849. Ответов 22
Метки нет (Все метки)
Знаю как записывать объекты в файл в бинарном виде, но как быть, когда у них динамические поля?
Какой метод использовать? Можете привести самый простейший пример?
0
|
07.10.2013, 20:23 | |
Ответы с готовыми решениями:
22
Как записать объект(или хотя бы его поля ) в файл в бинарном виде и считать оттуда? Из переменной типа std::string записать в файл большое количество данных (2 Mb) Как считать файл в бинарном виде? Как считать в бинарном виде файл из локальной сети |
07.10.2013, 21:54 | 2 | |||||
Так? Или как то по другому надо?
2
|
Ушел с форума
|
|
07.10.2013, 21:57 | 3 |
С практической точки зрения, лучше всего не изобретать велосипед, а воспользоваться
готовыми библиотеками сериализации. Например, Boost::serialization. Эта библиотека умеет сохранять и восстанавливать практически любые типы, включая определенные пользователем.
1
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
07.10.2013, 21:59 [ТС] | 4 |
Убежденный, я хочу понять как работает велосипед, а не просто ездить на нем)
0
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
07.10.2013, 22:02 [ТС] | 6 |
DiffEreD, спасибо, сейча изучу ваш код.
Кстати, почему вы каждый раз прописываете std:: а не впишите using namespace std; ?
0
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
07.10.2013, 22:02 [ТС] | 8 |
DiffEreD, спасибо, сейча изучу ваш код.
Кстати, почему вы каждый раз прописываете std:: а не впишите using namespace std; ?
0
|
Заблокирован
|
||||||
07.10.2013, 22:30 | 11 | |||||
1
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
||||||
07.10.2013, 23:24 [ТС] | 12 | |||||
Я имел ввиду запись ОБЪЕКТА с полем std::string
Например:
0
|
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
|
|
07.10.2013, 23:39 | 14 |
Лично мне в голову приходит только 1 способ - написать препроцессор, обрабатывающий классы и структуры и организовывал сериализацию этих классов и структур.
0
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
07.10.2013, 23:41 [ТС] | 15 |
iRomul,
могли бы вы написать самый простейший пример?
0
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
07.10.2013, 23:54 [ТС] | 17 |
Jupiter, это и называется сериализацией, я так понимаю?
0
|
10 / 10 / 5
Регистрация: 30.01.2013
Сообщений: 99
|
|
08.10.2013, 00:21 [ТС] | 19 |
Jupiter, окей, концепцию понял.
Но вот есть вопросы по коду, который дал уважаемый DiffEreD Не совсем понимаю как этот код работает. Например: string::size_type length = s.size(); Видно, что эта строка нужна для определения размера s, но что за size_type? Что это за тип? И еще не пойму вот эти строки: ofs.write((char const*)&length, sizeof(length)).write(s.data(), length); и ifs.read(&str_from_file[0], length).read((char*)&length, sizeof(length)); я впервые столкнулся с таким. Что это? Двойной вызов метода read()? Почему ifs.read().read()?
0
|
Неэпический
|
|||||||||||
08.10.2013, 00:30 | 20 | ||||||||||
потому что
Вы же пишите
Добавлено через 1 минуту И похоже код будет верным только начиная с C++11
1
|
08.10.2013, 00:30 | |
08.10.2013, 00:30 | |
Помогаю со студенческими работами здесь
20
Записать в файл list (очередь) объектов, в которых содержатся строки string, и считать с файла обратно в list Std:string в бинарный файл и обратно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |