0


0

私はこのプログラムを作りました:

#include #include using namespace std;

int main(){fstreamファイル。 file.open( "test.bin"、​​ios :: in | ios :: out | ios :: binary); if(!file.is_open()){return -1; int n = 5。 int x; file.write(reinterpret_cast(

これは、整数「n」を.binファイル「test.bin」に書き込み、次に「test.bin」から整数「x」にデータを読み取り、次に「x」を画面に表示することになっています。

プログラムを実行すると、5ではなく-842150451と表示されます。 なぜこれが起こるのですか、そしてどうすればそれを修正できますか?

4 Answer


7


あなたがそれを書くときfile.write()は現在のファイルポインタを動かしていません、あなたが書かれたデータの後に最初の場所からデータを読むことを引き起こしますか?


2


読み取りコマンドと書き込みコマンドの間に `+ file.seekg(0); +`を挿入します。


1


書き込んだデータを読み取るためには、書き込みを行った後にファイルストリームをファイルの先頭に再配置する必要があります。

また、書き込みによって期待したことがすべて書き込まれたこと、および読み取りによって実際にまったく読み取られたことがないかどうかも確認する必要があります。 半乱数は読み取り失敗のためです。


1


私はJhericoに同意します。 あなたには必要だ:

file.seekg(0、ios :: beg);