0

私は割り当てに取り組んでおり、バイナリファイルへの整数と倍精度の出力の一部に行き詰まっています。

出力ストリームにバイナリフラグを使用するとともに write() 関数を使用する必要があることはわかっていますが、write() には出力する文字配列が必要です。通常の文字列を出力するときは、(char *) を使用して型キャストするか、.c_str() 関数を使用できますが、double と integer に問題があります。

整数と double をバイナリに出力するにはどうすればよいですか?

4

2 に答える 2

1

変数を逆参照し、ポインタを にキャストしてからchar*、 を使用sizeof()して書き込むバイト数を決定できます。例えば:

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

また、ファイルを移植可能にする必要がある場合は、たとえば、さまざまな hton 関数 (保存時) と ntoh 関数 (読み取り時) を使用して、最初に変数をネットワーク バイト オーダーに変換することをお勧めします。整数。

于 2012-04-21T20:57:30.180 に答える
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));
于 2012-04-21T20:57:52.440 に答える