ant*_*nti 2 c++ serialization boost
std::vector<uchar>我有一个使用 boost 将 a 存储到二进制文件中的函数:
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();
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我在逆转该过程时遇到了麻烦。这段代码崩溃了:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后我正在运行:
std::vector<uchar> dataBack = vectorRead("vector.bin");
是不是这么简单呢?我缺少什么?
谢谢。
我缺少的是以二进制模式打开文件:
std::ifstream ifs(filename);
Run Code Online (Sandbox Code Playgroud)
需要是:
std::ifstream ifs(filename, std::ios::binary);
Run Code Online (Sandbox Code Playgroud)
所以,就变成了
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;
}
Run Code Online (Sandbox Code Playgroud)