我正在进行一项任务,我正陷入其中的一部分,即整数和双精度输出到二进制文件。
我知道我需要使用write()函数以及为输出流使用二进制标志,但write()需要输出字符数组。当我输出一个常规字符串时,我可以使用(char *)或使用.c_str()函数对其进行类型转换,但是我遇到了双精度和整数的问题。
我如何将整数和双精度输出到二进制文件?
答案 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));