Мне нужно написать/прочитать файл, содержащий std :: map. Файл должен быть прочитан при запуске программы (если он существует). Им с помощью fstream бустер, но им получить это:C++: используйте Boost Serialization для записи/чтения файлов
"terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): input stream error"
Ну, я действительно не знаю, что происходит .. это мои строки:
map<int64_t, int64_t> foo;
filesystem::path myFile = GetWorkingDirectory()/"myfile.dat";
[...............] // some code
filesystem::ifstream ifs(myFile);
archive::text_archive ta(ifs);
if (filesystem::exists(myFile)
{
ta >> foo; // foo is empty until now, it's fed by myFile
ifs.close();
}
Что им делать неправильно? Есть идеи? Спасибо.
P.S. Обратите внимание, что некоторые строки после, мне нужно сделать обратное действие: напишите в myfile.dat std :: map foo.
EDIT: все работает, если я использую std :: ifstream, сохраняя файл в том же каталоге, где im запускает приложение. Но, используя импульс и его путь, что-то пошло не так.
Каков ваш фактический ввод? –
Я пробовал без ввода (удаление файла) и с файлом file.dat, который я ранее создал таким же образом с помощью std :: ofstream..и обе дали мне ошибку выше – sciakysystem
, как файл содержал 'std :: map'? – Barracuda