ファイルサイズの測定方法に関するいくつかのトピック(C ++ファイルストリーム(fstream)の使用、ファイルのサイズをどのように判断できますか?およびC ++:誤ったファイルサイズの取得)を参照して、ファイルの最初と最後の差を計算します。 :
std::streampos fileSize( const char* filePath ){
std::streampos fsize = 0;
std::ifstream file( filePath, std::ios::binary );
fsize = file.tellg();
file.seekg( 0, std::ios::end );
fsize = file.tellg() - fsize;
file.close();
return fsize;
}
ただし、最初にファイルを開く代わりに、最後にファイルを開いて、次のように対策を講じることができます。
std::streampos fileSize( const char* filePath ){
std::ifstream file( filePath, std::ios::ate | std::ios::binary );
std::streampos fsize = file.tellg();
file.close();
return fsize;
}
それは機能しますか?そうでなければ、なぜですか?