如何在C ++中按字节顺序写入文件

时间:2013-06-30 15:06:55

标签: c++ c

我想在指定的文件位置写入C ++中的二进制文件,这样我一次写入1-5个字节的文件。我有一个整数列表:

5 9 10 11 76 98 99999

我希望以字节方式存储在文件中。这样,值就会以下列形式存储在文件中:

filepointerWriter, 5
filepinterWriter+2, 9
filepinterWriter+8, 10
filepinterWriter+12, 76
filepinterWriter+16, 10 etc

我知道如何写入如下文件:

ofstream f("f", ios::out | ios::binary);
f << 5; f << 9; f << 10; f << 76; // etc.

但是我没有得到如何按字节顺序写入文件。

1 个答案:

答案 0 :(得分:0)

你可以使用指针和memcpy来做,例如:

假设您要存储以下内容:

--------------------------------------------
|   bytes 0-3  |  bytes 4-5   | bytes 6-9  |
|      9       |     10       |     15     |
--------------------------------------------


int int1 = 9;
short short1 = 10;
int int2 = 15;

const int num_bytes = 10; // total bytes in the array
char str[num_bytes];
ZeroMemory(str, num_bytes);  // this will write zeros in the array

memcpy((void *)(str + 0), &int1, 4);    // length of integer 4 bytes
memcpy((void *)(str + 4), &short1, 2);  // length of short 2 bytes
memcpy((void *)(str + 6), &int2, 4);    // length of integer 4 bytes

然后你可以使用你想要的任何方法编写“str”变量。