0

我正在处理一项作业,但我被困在其中的一部分上,即整数和双精度的输出到二进制文件。

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

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

4

2 回答 2

1

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

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

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

于 2012-04-21T20:57:30.180 回答
1

您可以使用此处描述的 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));
于 2012-04-21T20:57:52.440 回答