【问题标题】:Using boost to read a binary file into a std::vector?使用 boost 将二进制文件读入 std::vector?
【发布时间】:2018-01-05 16:24:30
【问题描述】:

我有一个使用 boost 将std::vector<uchar> 存储到二进制文件中的函数:

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&lt;uchar&gt; dataBack = vectorRead("vector.bin");

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

谢谢。

【问题讨论】:

    标签: c++ serialization boost


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2014-01-11
      相关资源
      最近更新 更多