質問

私は窓の下でアプリケーションを研究開発をしています、と私は、ファイルへの読み書きにfstreamの使用しています。

私はこのように開くのfstreamと書いています:

fs.open(this->filename.c_str(), std::ios::in|std::ios::out|std::ios::binary);

このコマンドで書き込み

fs.write(reinterpret_cast<char*>(&e.element), sizeof(T));

タグで各書き込みの後にファイルを閉じます
fs.close()

このように開くはifstreamを読みます:

is.open(filename, std::ios::in);

このコマンドで読みます:

is.read(reinterpret_cast<char*>(&e.element), sizeof(T));

書き込みは罰金を行っています。しかし、私は、ループ内でこの方法を読みます:

while(!is.eof())
{
  is.read(reinterpret_cast<char*>(&e.element), sizeof(T));
}

とプログラムがファイルの終わりに到達する必要があるにもかかわらず、読み続けます。 istellg posが0である、とgcountはあまりにも0に等しいですが、少し失敗し、EOFビットの両方OKです。

私はこの上でクレイジー実行している、いくつかの助けが必要...

役に立ちましたか?

解決

これを試してみてください

while(is.read(reinterpret_cast<char*>(&e.element), sizeof(T))) {}

また、あなたが同様にistreamフラグでbinaryを開く必要があります:

is.open(filename, std::ios::in | std:ios::binary);

それは永遠に読み込む場合は、それが何を読んでいますか?どのようなタイプがTで?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top