tellg() が不正確なファイル サイズを返すのはなぜですか?
ファイル処理のコンテキストでは、tellg() 関数がよく使用されます。ファイル内の現在位置を特定します。ただし、tellg() の特定の実装では、ファイルから読み取られた実際のデータ量を超える値が返される場合があります。
tellg() について
一般的な考えに反して、tellg() はファイル サイズを直接報告しません。代わりに、ユーザーが後でファイル内の同じ場所に移動できるようにするトークン値を提供します。この値の具体的な解釈はオペレーティング システムによって異なります。
Unix と Windows
Unix システムでは、tellg() は通常、先頭からのオフセットをバイト単位で返します。ファイル。対照的に、Windows では、戻り値はバイナリ モードで開かれたファイルのオフセットのみを表します。テキスト モード ファイルの場合、tellg() は実際のバイト数より大きい任意の値を報告することがあります。
ファイル サイズの決定
ファイル サイズを正確に確認するには、次のアプローチの使用を検討してください:
#include <limits> file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); file.clear(); // Reset eof flag set by ignore file.seekg(0, std::ios_base::beg);
追加考慮事項
以上が`tellg()` が時々間違ったファイル サイズを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。