3
 std::fstream fin("emptyFile", std::fstream::in);
 std::cout << fin.eof() << std::endl;

これは印刷され0ます。そのため、関数を使用してeof、ファイルが空かどうかを確認できません。または、いくつかのデータを読み取った後、そこにデータがないかどうかを確認する必要があります。

4

2 に答える 2

1

eof()eofbitまだ設定されていないため、間違った結果が得られます。何かを読み取ると、ファイルの終わりを渡し、eofbit設定されます。

以下を避けeof()て使用してください。

std::streampos current = fin.tellg();
fin.seekg (0, fin.end);
bool empty = !fin.tellg(); // true if empty file
fin.seekg (current, fin.beg); //restore stream position
于 2013-07-25T17:52:17.003 に答える