Ошибка в следующей строке:
std::ofstream ofs("c:\test");
Компилятор выложил бы предупреждение (по крайней мере), если бы ваш файл назывался jest
; но '\t'
- поскольку вы не можете вставить вкладку, ваша ошибка остается необработанной. Короче говоря, файл не будет создан. Вы можете проверить это с помощью:
if (ofs.good()) { ... }
Теперь, поскольку файл не был создан, у вас нет действительного итератора для передачи на boost::archive::text_oarchive
, который выдает исключение.
Попробуйте это:
std::ofstream ofs("c:\\test");
// --^ (note the extra backslash)
if (ofs.good()) {
boost::archive::text_oarchive oa(ofs);
// ...
}
Надеюсь, это поможет!
PS: Последняя гнида, которую я не мог помешать себе сделать - если вы собираетесь использовать
using namespace std;
затем
ofstream ofs("c:\\test");
достаточно хорошо. Конечно, квалификация ofstream
не является ошибкой, но это не лучший стиль кодирования. Но тогда вы знаете, что использование using namespace
- это плохо, не так ли?
PPS : Спасибо - sharptooth
за напоминание о том, что \t
дает вам вкладку!