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

时间:2012-04-21 20:52:59

标签: c++ integer double binaryfiles

我正在进行一项任务,我正陷入其中的一部分,即整数和双精度输出到二进制文件。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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));