0
私のコードのどこが間違っているのか混乱しています。 1,2,3になるのではなく、1,1,1です。私が何をすることができるかについての提案はありますか?私は、私のエラーがデータの書き込みにあるか、変数値を使用しているかを推測しています。バイナリファイルの追加と読み取り
class Binary
{
public:
Binary(int num);
~Binary();
void createBinary();
void writeBinary();
void readBinary();
string binFile;
int value;
fstream binaryFile;
};
Binary::Binary(int num)
{
value = num;
binFile = "BinaryFile.bin";
}
Binary::~Binary()
{
}
void Binary::createBinary()
{
binaryFile.open(binFile, ios::out | ios::binary);
binaryFile.close();
}
void Binary::writeBinary()
{
if (!binaryFile) //if file does not exist
{
createBinary();
}
binaryFile.open(binFile, ios::app | ios::binary);
binaryFile.write((char*)&value, sizeof(value));
binaryFile.close();
}
void Binary::readBinary()
{
binaryFile.open(binFile, ios::in |ios::binary);
binaryFile.read((char*)&value, sizeof(value));
binaryFile.close();
cout << value << ", ";
}
int main()
{
Binary num1(1);
Binary num2(2);
Binary num3(3);
num1.writeBinary();
num2.writeBinary();
num3.writeBinary();
num1.readBinary();
num2.readBinary();
num3.readBinary();
return 0;
}
ポップクイズ:ファイルのどの部分が 'readBinary()'と呼ばれる3回のそれぞれを読みますか?あなたの複数の選択肢の答えは次のとおりです:1.何とか 'readBinary()'に前回呼び出されたファイルのどの部分が読み込まれたかを魔法のように知っていて、ファイルの次の部分にスキップします。答えは30秒です。時計は今や刻々と始まります。 –
もっとシンプルにするには:ファイルを一度開いてから繰り返し読み込み、閉じます。 – Barmar
ファイルの先頭にある – zzQwerty