ifstream の eof() 関数を理解する
ifstream クラスの eof() 関数は、C でのファイル入力操作において重要な役割を果たします。ただし、その動作は、特に get() 関数に関連して、時々不可解になることがあります。
次の例を考えてみましょう。
入力ファイル "ex.txt" に次のものが含まれている場合「abc」。最初の while ループは終了する前に 4 文字を読み取ります。これは、eof() がファイルの終わりを超えて読み取ろうとした後にのみ EOF フラグを設定するためです。最初のループは、読み取りが失敗するまで 1 文字ずつ読み取り、EOF フラグを設定します。ただし、get() は、EOF フラグを考慮せず、ファイルの終わりを示す -1 を返します。
2 番目のループでは、>> を使用します。オペレータは正しい動作を示します。 >>演算子は文字 (この場合は文字列) の読み取りを試み、読み取りに失敗すると EOF フラグを設定します。したがって、ループは "abc" を読み取った後に終了します。
混乱の解決
混乱を避けるために、次の点に注意することが重要です。
は、読み取りと EOF フラグの更新の両方を実行します。
したがって、 >> を使用してファイルの終わりを正確に検出するには、 eof() よりも get() を使用することをお勧めします。
以上がC の `ifstream::eof()` 関数は実際に `get()` および抽出演算子とどのように連携するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。