特定のファイル内の文字を読み取り、16 進数の文字数を出力しようとしています。これをテキストファイルに対して実行すると、多かれ少なかれ正確ですが、他のほとんどのものではかなりずれているようです。IE: ~700MB の *.mp4 ファイルは 12K で表示されます。ここで何が欠けていますか?
#include <fstream>
#include <iostream>
using namespace std ;
int main()
{
char letter ;
int i ;
cout << "Input the filename:" << endl;
string stringinput;
cin >> stringinput;
ifstream file( stringinput.c_str() ) ;
if( ! file )
{
cout << "Error opening input file, " << ( stringinput ) << ". Check file path and try again." << endl ;
return -1 ;
}
else
for( i = 0; ! file.eof() ; i++ )
{
file.get( letter ) ;
//cout << hex << (int) letter;
}
cout << endl;
float k = 1024, m = 1048576;
file.close();
if( i < 1024)
{
cout << "Total: " << dec << i << endl;
}
else if( i < m)
{
cout << "Total: " << dec << (i / k) << "K" << endl;
}
else
{
cout << "Total: " << dec << (i / m) << "M" << endl;
}
return 0 ;
}