现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

基于c++标准库计算文件大小

2013-12-10 11:20 工业·编程 ⁄ 共 543字 ⁄ 字号 暂无评论

    前几天用c++写个小程序,需要想得到文件的大小,以前用的是c的办法。但是后面的文件操作都是用c++的io流做的,怕用c的FILE会有冲突,所以想用c++的方式实现,去网上一搜居然没有,全是用c和windows API的,难道c++这么强大的语言居然没这功能,不可能啊,翻出《c++标准程序库》重看了一下fstream的内容,才找到了答案。不过书中也没有直接的计算文件大小的函数。只有操作流的读写位置的方法。

    模仿c中的思路,计算文件结尾的读写位置减去文件起始的读写位置就是文件的字节数。

unsigned int GetFileLength(ifstream &f)
{
ifstream::pos_type old=f.tellg();
f.seekg(0,ifstream::beg);
ifstream::pos_type start=f.tellg();
f.seekg(0,ifstream::end);
ifstream::pos_type end=f.tellg();
f.seekg(old);
return end-start;

}
不过文件流要以二进制的方式打开:

ifstream f("zqc.torrent",ifstream::binary);
cout<<GetFileLength(f);

给我留言

留言无头像?