ホームページ >バックエンド開発 >C++ >C の `ifstream::eof()` 関数は実際に `get()` および抽出演算子とどのように連携するのでしょうか?

C の `ifstream::eof()` 関数は実際に `get()` および抽出演算子とどのように連携するのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-29 18:48:11511ブラウズ

How Does C  's `ifstream::eof()` Function Really Work with `get()` and the Extraction Operator?

ifstream の eof() 関数を理解する

ifstream クラスの eof() 関数は、C でのファイル入力操作において重要な役割を果たします。ただし、その動作は、特に get() 関数に関連して、時々不可解になることがあります。

次の例を考えてみましょう。

入力ファイル "ex.txt" に次のものが含まれている場合「abc」。最初の while ループは終了する前に 4 文字を読み取ります。これは、eof() がファイルの終わりを超えて読み取ろうとした後にのみ EOF フラグを設定するためです。最初のループは、読み取りが失敗するまで 1 文字ずつ読み取り、EOF フラグを設定します。ただし、get() は、EOF フラグを考慮せず、ファイルの終わりを示す -1 を返します。

2 番目のループでは、>> を使用します。オペレータは正しい動作を示します。 >>演算子は文字 (この場合は文字列) の読み取りを試み、読み取りに失敗すると EOF フラグを設定します。したがって、ループは "abc" を読み取った後に終了します。

混乱の解決

混乱を避けるために、次の点に注意することが重要です。

  • -1 は、get() がファイルの終わりを示す方法です。
  • eof() は、ファイルの末尾を超えた読み取り試行が失敗した後の EOF フラグ。
  • は、読み取りと EOF フラグの更新の両方を実行します。

したがって、 >> を使用してファイルの終わりを正確に検出するには、 eof() よりも get() を使用することをお勧めします。

以上がC の `ifstream::eof()` 関数は実際に `get()` および抽出演算子とどのように連携するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。