Mr_Dream_R 2022-06-12 11:17 采纳率: 100%
浏览 52
已结题

C++ bin文件写入

问题遇到的现象和发生背景

C++ 如何将vector<vector> 写入到bin文件?error: invalid cast from type 'std::vector<std::vector >' to type 'char*'

问题相关代码,请勿粘贴截图
using namespace std;

    ofstream ofs;
    ofs.open("./out.bin",ios::out | ios::binary);

    // 560*96的vector
    vector<vector<float>> tar_data;
    int f_elem = 0;
    for (int i=0;i<560*96;i++)
    {
        vector<float> data;
        int v = i % 96;
        if (v == 0) {f_elem++;}
        data = {0.0,2.34255,3.52111,float(v),float(f_elem)};
        tar_data.push_back(data);
    }
    ofs.write(reinterpret_cast<char *>(tar_data), sizeof(tar_data));
    //ofs.flush();
    ofs.close()

运行结果及报错内容

error: invalid cast from type 'std::vector<std::vector >' to type 'char'*
编译时报错

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • qfl_sdu 2022-06-12 11:48
    关注

    不能直接这么写入,老老实实一个一个数据写入吧。

        ofstream ofs;
        ofs.open("./out.bin", ios::out | ios::binary);
    
        // 560*96的vector
        vector<vector<float>> tar_data;
        int f_elem = 0;
        for (int i = 0; i < 560 * 96; i++)
        {
            vector<float> data;
            int v = i % 96;
            if (v == 0) { f_elem++; }
            data = { 0.0,2.34255,3.52111,float(v),float(f_elem) };
            tar_data.push_back(data);
    
            for (int j = 0; j < data.size(); j++)
                ofs.write((char*)&data[j], sizeof(float));
        }
        //ofs.write(reinterpret_cast<char*>(tar_data), sizeof(tar_data));
    
        ofs.close();
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 6月12日