如何使用c++在二进制模式下将矢量写入文件

how to write a vector to a file in binary mode using c++?

本文关键字:文件 c++ 何使用 二进制 模式      更新时间:2023-10-16

到目前为止,我尝试过这个,

#include<iostream>
#include<fstream>
#include <stdlib.h> 
#include<vector>
using namespace std;
int main()
{
   unsigned short array[3]={0x20ac,0x20ac,0x20ac};
   vector<unsigned short> v;
   std::ofstream file;
   file.open("1.txt", std::ios_base::binary);
   file.write((char*)(array), sizeof(array));
   v.push_back(array[0]);
   v.push_back(array[1]);
   v.push_back(array[2]);
   file.write((char *)v,sizeof(v));
   file.close();
}

我收到一条错误消息stan.cpp:在函数"int main()"中:stan.cpp:21:23:错误:从类型"std::vector"到类型"char*"的强制转换无效。

您应该逐个写入每个元素,或者通过write(v.data(), v.size() * sizeof(unsigned short)) 写入整个数据

您必须找到指向第一个元素的指针,然后根据元素的v*size中的元素数量计算字节数:

file.write((char*)(&v[0]), v.size() * sizeof(v[0])) ;

输出:

% od -x 1.txt
0000000 20ac 20ac 20ac