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

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日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法