tellg() 関数とファイル サイズ
tellg() は、ファイル内の現在位置を取得するために使用される C の関数です。ただし、tellg() はファイルの実際のサイズをバイト単位で提供しないことに注意することが重要です。代わりに、後で同じ位置をシークするために使用できるトークン値を返します。
提供されたコードでは、tellg() の予期される動作に関して誤解があるようです。このコードは、tellg() を使用してファイルのサイズを決定し、そのサイズを使用してファイルの内容を保持するバッファを割り当てます。ただし、この目的で Tellg() に依存すべきではありません。
C 言語仕様に従って、tellg() は実装に固有のトークン値を返します。多くの場合、これは Unix システムのバイト オフセットに対応しますが、Windows ではこの動作は保証されません。テキスト モードでは、Windows は現在の位置に到達するために必要な実際のバイト数よりも大きい値を返す場合があります。
ファイルのサイズを正確に判断するには、次のような代替方法を使用することをお勧めします。
#include <limits> ... file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); // Retrieve the size of the file in bytes file.clear(); // Reset the file stream file.seekg(0, std::ios_base::beg); // Return to the beginning of the file
さらに、提供されたコードにはいくつかの問題があります。
以上が`tellg()` を使用する代わりに C でファイルのサイズを正確に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。