我有一个函数,使用boost:
将void vectorWrite(const string& filename, const std::vector<uchar> dataV)
{
std::ofstream ofs3(filename, std::ios::out | std::ios::binary);
boost::archive::binary_oarchive oa3(ofs3);
oa3 << dataV;
ofs3.close();
}
存储到二进制文件中
std::vector<uchar> vectorRead(const string& filename)
{
std::vector<uchar> v2;
std::ifstream ifs(filename);
boost::archive::binary_iarchive ia(ifs);
ia >> v2;
return v2;
}
这似乎工作正常,但我无法逆转这个过程。 这段代码崩溃了:
std::vector<uchar> dataBack = vectorRead("vector.bin");
我正在跑步:
{{1}}
这不简单吗?我错过了什么?
谢谢。
答案 0 :(得分:1)
我缺少的是以二进制模式打开文件:
std::ifstream ifs(filename);
需要:
std::ifstream ifs(filename, std::ios::binary);
所以,它变成了
std::vector<uchar> vectorRead(const string& filename)
{
std::vector<uchar> v2;
std::ifstream ifs(filename, std::ios::binary);
boost::archive::binary_iarchive ia(ifs);
ia >> v2;
return v2;
}