Проблема в том, что вы не пишете archive1.bin
то, что вы думаете, что пишете.Это можно продемонстрировать, добавив строки:
text_oarchive oa2 {std::cout};
oa2 << m;
в конце функции save
, и когда вы сделаете это, вы увидите:
22 сериализация :: архив 170 0 1 0 0 0 3 9
напечатано на stdout
.
Для уточнения измените последнюю строку функции load
на:
std::cout << std::hex << m[3] << std::endl;
и тогда вы увидите:
6e6f6974
, что является ASCII noit
, то есть четвертое целое число в archive1.bin
.
Всеиз которых является многословным способом сказать, что Джон говорит в своем комментарии выше.Вы должны прочитать буст-архив, используя одобренные функции сериализации .
Live demo .