C++ 如何将整数和双精度数输出到二进制文件
我在做一个赋值,我被它的一部分卡住了,整数和双精度的输出到一个二进制文件 我知道我需要使用write()函数以及输出流的二进制标志,但是write()需要一个字符数组来输出。当我输出一个常规字符串时,我可以使用(char*)或使用.c_str()函数对其进行类型转换,但是我在处理double和integer时遇到了问题C++ 如何将整数和双精度数输出到二进制文件,c++,integer,double,binaryfiles,C++,Integer,Double,Binaryfiles,我在做一个赋值,我被它的一部分卡住了,整数和双精度的输出到一个二进制文件 我知道我需要使用write()函数以及输出流的二进制标志,但是write()需要一个字符数组来输出。当我输出一个常规字符串时,我可以使用(char*)或使用.c_str()函数对其进行类型转换,但是我在处理double和integer时遇到了问题 如何将整数和double输出为二进制?您可以取消对变量的引用,然后将指针投射到char*,然后使用sizeof()确定要写入的字节数。例如: int var; char* var
如何将整数和double输出为二进制?您可以取消对变量的引用,然后将指针投射到
char*
,然后使用sizeof()
确定要写入的字节数。例如:
int var;
char* varAsCharP = (char*)&var;
size_t bytesToWrite = sizeof(int);
此外,如果您需要可移植的文件,您可能希望首先使用各种hton函数(保存时)和ntoh函数(读回时)将变量转换为网络字节顺序,尽管这仅适用于整数。您可以使用此处描述的stdlib方法: 或者您可以使用
boost::lexical\u cast
或者您可以使用stringstream
你挑吧
如果只需要字节表示,则可以执行如下memcpy:
int myVar = 10;
char * dest = new char[sizeof(myVar)];
memcpy(&dest, &myVar, sizeof(myVar));
你需要人类可读吗?我只需要将整数和双精度输出到二进制文件。二进制文件的内容不需要是人类可读的,但在写入时不要忘记传递类型的大小。我认为OP想要写入值的字节表示,而不是字符串表示。在这种情况下,只需执行一个简单的memcpy,
char*dest=new char[sizeof(src)];memcpy(&dest,src,sizeof(src))代码>打字:memcpy
中的&src
。是的,我能做到。