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

时间:2018-01-05 16:24:30

标签: c++ serialization boost

我有一个函数,使用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}}

这不简单吗?我错过了什么?

谢谢。

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;
}