web-dev-qa-db-ja.com

C ++を使用して整数をバイナリファイルに書き込みますか?

非常に単純な質問があります。バイナリファイルを使って作業するのはこれが初めてであり、私にはそれらが完全に理解されていません。私がやりたいのは、バイナリファイルに整数を書き込むことだけです。

ここに私がそれをした方法があります:

#include <fstream>
using namespace std;
int main () {
    int num=162;
    ofstream file ("file.bin", ios::binary);
    file.write ((char *)&num, sizeof(num));
    file.close (); 
    return 0;
}

私が何か間違ったことをしたかどうか教えていただけますか?

問題を引き起こしているのは、file.writeの行です。理解できません。

前もって感謝します。

16
eqagunn

問題を引き起こしているのは、file.writeの行です。理解できません。

ofstream.write()メソッドのドキュメントを読むと、2つの引数を要求していることがわかります。

  1. a データのブロックへのポインター書き込む内容。

  2. このブロックのバイト単位のサイズを表す整数値。

このステートメントは、次の2つの情報をofstream.write()に提供します。

_file.write(reinterpret_cast<const char *>(&num), sizeof(num));
_

_&num_はデータブロックのアドレス(この場合は整数変数)で、sizeof(num)はこのブロックのサイズ(Windowsプラットフォームでは4バイトなど)です。

28
user1149224