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>
Поделиться:
Популярные книги
Черный маг императора 3
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том VIII
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Пипец Котенку! 3
3. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Разбуди меня
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Болотник 2
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Ты всё ещё моя
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
Имя нам Легион. Том 4
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Сводный гад
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Я князь. Книга XVIII
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Королевская Академия Магии. Неестественный Отбор
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Последняя Арена 6
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Жребий некроманта. Надежда рода
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50