Написать программы на C++ для сериализации и десериализации структуры Person
.
Структура Person
определяется следующим образом:
struct Email {
std::string nickname;
std::string server;
};
struct Person {
std::string first_name;
std::string last_name;
Email email;
size_t age;
std::string phone;
};
Структура репозитория должна иметь следующий вид:
cmake/HunterGate.cmake
sources/
- pack.cpp
- unpack.cpp
CMakeLists.txt
Сериализованные данные должны пройти проверку валидатора jsonlint
- 1. Создать публичный репозиторий с названием lab13 на сервисе GitHub
- 2. Ознакомиться со ссылками учебного материала
- 3. Выполнить инструкцию учебного материала
- 4. Составить отчет и отправить ссылку личным сообщением в Slack
$ export GITHUB_USERNAME=hackallcode
$ alias edit=nano
$ cd ~/workspace
$ source scripts/activate
$ mkdir projects/lab13 && cd projects/lab13
$ git inti
$ git remote add origin git@github.com:${GITHUB_USERNAME}/lab13
$ edit CMakeLists.txt
$ edit sources/pack.cpp
$ edit sources/unpack.cpp
$ cmake -H. -B_build -DCMAKE_INSTALL_PREFIX=_install
$ cmake --build _build --target install
$ ./_install/bin/pack artifacts/test.json
Enter data to fields of the Person structure.
First name:
John
Last name:
Smith
E-mail:
john-smith@yandex.ru
Age (optional):
Phone (optional):
+1-111-111-11-11
$ ./_install/bin/unpack artifacts/test.json
[Person]
First name: John
Last name: Smith
E-mail: john-smith@yandex.ru
Phone: +1-111-111-11-11
$ jsonlint artifacts/test.json
{
"age": 0,
"email": {
"nickname": "john-smith",
"server": "yandex.ru"
},
"first_name": "John",
"last_name": "Smith",
"phone": "+1-111-111-11-11"
}
$ cat >> .travis.yml <<EOF
before_install:
- if [ "$CXX" = "g++" ]; then export CXX="g++-4.9" CC="gcc-4.9"; fi
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.9
- g++-4.9
language: cpp
script:
- cmake -H. -B_build -DCMAKE_INSTALL_PREFIX=_install
- cmake --build _build --target install
- ./_install/bin/unpack artifacts/test.json
- npm install jsonlint -g
- jsonlint artifacts/test.json
EOF
$ git add .
$ git commit -m"first commit"
$ git push origin master
$ travis login --auto
$ travis enable
$ cd ~/workspace
$ source scripts/activate
$ mkdir reports/lab12 && cd reports/lab13
$ edit REPORT.md
$ gistup -m "lab13"
Copyright (c) 2017 Братья Вершинины