Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将整数和双精度数输出到二进制文件_C++_Integer_Double_Binaryfiles - Fatal编程技术网

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

C++ 如何将整数和双精度数输出到二进制文件,c++,integer,double,binaryfiles,C++,Integer,Double,Binaryfiles,我在做一个赋值,我被它的一部分卡住了,整数和双精度的输出到一个二进制文件 我知道我需要使用write()函数以及输出流的二进制标志,但是write()需要一个字符数组来输出。当我输出一个常规字符串时,我可以使用(char*)或使用.c_str()函数对其进行类型转换,但是我在处理double和integer时遇到了问题 如何将整数和double输出为二进制?您可以取消对变量的引用,然后将指针投射到char*,然后使用sizeof()确定要写入的字节数。例如: int var; char* var

我在做一个赋值,我被它的一部分卡住了,整数和双精度的输出到一个二进制文件

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


如何将整数和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
。是的,我能做到。