Чтение онлайн

на главную - закладки

Жанры

C++. Сборник рецептов

Когсуэлл Джефф

Шрифт:

Пример 14.27 показывает, как можно использовать Boost.Serialization для сохранения вектора

std::vector
, состоящего из объектов
Animal
, в файле animals.xml и затем для загрузки его обратно в память. В примере 14.28 показано содержимое файла animals.xml после выполнения программы из примера 14.27.

Пример 14.27 Сериализация вектора std::vector, состоящего из объектов Animal

#include <fstream>

#include <boost/archive/xml_oarchive.hpp> //
Архив для записи XML

#include <boost/archive/xml_iarchive.hpp> // Архив для чтения XML

#include <boost/serialization/vector.hpp> // Средства сериализации вектора

#include "animal.hpp" // std::vector

int main {

 using namespace std;

 using namespace boost::archive; // пространство имен для архивов

 using namespace boost::serialization; // пространство имен для make_nvp

 try {

// Заполнить список животных

vector<Animal> animalList;

animalList.push_back(

Animal("Herby", "elephant", "1992-04-23",

Contact("Dr. Hal Brown", "(801)595-9627"),

Contact("Bob Fisk", "(801)881-2260")));

animalList.push_back(

Animal("Sheldon", "parrot", "1998-09-30",

Contact("Dr. Kevin Wilson", "(801)466-6498"),

Contact("Eli Wendel", "(801)929-2506")));

animalList.push_pack(

Animal("Dippy", "penguin", "2001-06-08",

Contact("Dr. Barbara Swayne", "(801)459-7746"),

Contact("Ben Waxman", "(801)882-3549")));

// Сконструировать выходной архив XML и сериализовать список

ofstream fout("animals.xml");

xml_oarchive oa(fout);

oa << make_nvp("animalList", animalList);

fout.close;

// Сконструировать входной архив XML и десериализовать список

ifstream fin("animals.xml");

xml_iarchive ia(fin);

vector<Animal> animalListCopy;

ia >> make_nvp("animalList", animalListCopy);

fin.close;

if (animalListCopy != animalList) {

cout << "XML serialization failed\n";

return EXIT_FAILURE;

}

 } catch (const exception& e) {

cout << e.what << "\n";

return EXIT_FAILURE;

 }

}

Пример 14.28.

Файл animals.xml после выполнения программы из примера 14.27

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<!DOCTYPE boost_serialization>

<boost_serialization signature="serialization::archive" version="3">

<animalList class_id="0" tracking_level ="0" version="0">

 <count>3</count>

 <item class_id="1" tracking_level="0" version="0">

<name>Herby</name>

<species>elephant</species>

<dateOfBirth class_id="2" tracking_level="0" version="0">

<date>19920423</date>

</dateOfBirth>

<veterinarian class_id="3" tracking_level="0" version="0">

<name>Dr. Hal Brown</name>

<phone>(801)595-9627</phone>

</veterinarian>

<trainer>

<name>Bob Fisk</name>

<phone>(801)881-2260</phone>

</trainer>

 </item>

 <item>

<name>Sheldon</name>

<species>parrot</species>

<dateOfBirth>

<date>19980930</date>

</dateOfBirth>

<veterinarian>

<name>Dr. Kevin Wilson</name>

<phone>(801)466-6498</phone>

</veterinarian>

<trainer>

<name>Eli Wendel</name>

<phone>(801)929-2506</phone>

</trainer>

 </item>

 <item>

<name>Dippy</name>

Поделиться:
Популярные книги

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Жандарм 2

Семин Никита
2. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 2

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Отмороженный 4.0

Гарцевич Евгений Александрович
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0

Треугольная шляпа. Пепита Хименес. Донья Перфекта. Кровь и песок.

Бласко Висенте Ибаньес
65. Библиотека всемирной литературы
Проза:
классическая проза
5.00
рейтинг книги
Треугольная шляпа.
Пепита Хименес.
Донья Перфекта.
Кровь и песок.

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21