私は割り当てに取り組んでおり、バイナリファイルへの整数と倍精度の出力の一部に行き詰まっています。
出力ストリームにバイナリフラグを使用するとともに write() 関数を使用する必要があることはわかっていますが、write() には出力する文字配列が必要です。通常の文字列を出力するときは、(char *) を使用して型キャストするか、.c_str() 関数を使用できますが、double と integer に問題があります。
整数と double をバイナリに出力するにはどうすればよいですか?
私は割り当てに取り組んでおり、バイナリファイルへの整数と倍精度の出力の一部に行き詰まっています。
出力ストリームにバイナリフラグを使用するとともに write() 関数を使用する必要があることはわかっていますが、write() には出力する文字配列が必要です。通常の文字列を出力するときは、(char *) を使用して型キャストするか、.c_str() 関数を使用できますが、double と integer に問題があります。
整数と double をバイナリに出力するにはどうすればよいですか?
変数を逆参照し、ポインタを にキャストしてからchar*、 を使用sizeof()して書き込むバイト数を決定できます。例えば:
int var;
char* varAsCharP = (char*)&var;
size_t bytesToWrite = sizeof(int);
また、ファイルを移植可能にする必要がある場合は、たとえば、さまざまな hton 関数 (保存時) と ntoh 関数 (読み取り時) を使用して、最初に変数をネットワーク バイト オーダーに変換することをお勧めします。整数。
ここで説明されている 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));