如何将整数和双精度输出到二进制文件

how to output integers and doubles to binary file

本文关键字:输出 二进制文件 双精度 整数      更新时间:2023-10-16

我正在做一个作业,我卡在了其中的一部分,整数和双精度的输出到二进制文件。

我知道我需要使用 write() 函数以及输出流的二进制标志,但是 write() 需要一个字符数组来输出。 当我输出一个常规字符串时,我可以使用 (char *) 或使用 .c_str() 函数对其进行类型转换,但是我在使用双精度和整数时遇到了问题。

我将如何将整数和双精度输出为二进制?

您可以取消引用变量,然后将指针强制转换为 char* ,然后使用 sizeof() 确定要写入的字节数。例如:

int var;
char* varAsCharP = (char*)&var;
size_t bytesToWrite = sizeof(int);

此外,如果您需要文件是可移植的,您可能希望首先使用各种 hton 函数(保存时)和 ntoh 函数(回读时)将变量转换为网络字节顺序 - 尽管这仅适用于整数。

您可以使用下面描述的 stdlib 方法:http://msdn.microsoft.com/en-us/library/0heszx3w%28v=vs.71%29.aspx

或者您可以使用boost::lexical_cast

或者您可以使用stringstream

任你挑选

如果你只想要字节表示,那么你可以做一个这样的memcpy:

int myVar = 10;
char * dest = new char[sizeof(myVar)];
memcpy(&dest, &myVar, sizeof(myVar));