由于现在的STL实现中流的位置并不是long表示的, 所以不能直接用它来表示文件的长度
转化的办法是把读写指针分别置于文件开头和结尾, 利用streampos提供的减法操作得到文件的字节数
#include <fstream>
using namespace std;
long File_length(char const *pfile)
{
ifstream file(pfile, ios::binary);
if ( !file )
{
cerr<<pfile<<" can not open!"<<endl;
return 0;
}
streampos begin = file.tellg(); //获得开头的位置
file.seekg(0, ios::end); //定位到文件尾部
streampos end = file.tellg(); //获得尾部的位置
file.close();
return (long)(end-begin); //利用streampos的"-"操作得到文件的字节长度
}