使用 boost 将二进制文件读入 std::vector?

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");

是不是这么简单呢?我缺少什么?

谢谢。

ant*_*nti 5

我缺少的是以二进制模式打开文件

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)