在VC里面对一个文件求大小时,可以有什么方法(遍历文件内容就算了,太慢了)我试了几种方法,都不行,可能是由于VC里面对这几个变量的封装方式不大一样。方法1:
fstream fhandler;
fhandler.open("test.cpp",ios::in);filebuf *pbuf;
pbuf=fhandler.rdbuf();
long size=pbuf->seekoff(0,ios::end,ios::in);
在TC下可以算出文件的大小,可是在VC下求得任何文件的大小都为-1方法2:
fstream fhandler;
fhandler.open("test.cpp",ios::in);long size=ios::end-ios::beg;
这样求得所有文件的大小都为2请问这几种方法都错在哪里?不过我还是最想知道到底怎么在VC下正确的算出一个文件的大小。

解决方案 »

  1.   

    好的,搞定了。那两种为什么错了呢?是MFC里面的seekoff和TC里的不同吗?
      

  2.   

    不好意思,又一个问题,我用了CFile里面的东东,可还是出了点儿错,请问是怎么回事啊?
    我的用法是:CFile* newf=new CFile(_T("test.cpp"),CFile::modeRead | CFile::shareDenyNone);size=newf->GetLength();在连接时出来3个错误,是:
    (1)nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    (2)nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex请大家帮忙啊
      

  3.   

    在SDK的情况下:你可以使用CreateFile来打开文件,如果成功的话该API返回文件的句柄,
    然后使用GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh)文件的返回值为低32bit,可选参数lpFileSizeHigh返回高32bit
    你说的连接错误我猜可能是"工程-->设置"出了问题