概述
微软的VC中对于文件操作的类CFile中有个成员函数Read,返回值为实际读取数据大小。对于需要循环读取文件的处理来说,可以通过判断实际读取的数据大小来处理最后剩下来的数据。但是,如果使用C++的数据流方式来处理文件时,你会发现read返回值是*this,而不是读取数据的实际大小。也没有其他对应的函数能得到当前实际读取数据的大小。但是我在网上找到一种替代方式:
ifstream ifs(
"
d:/test
"
);
//
要处理的文件
ifs.read(( char * )buffer, bufSize); // 按照指定的大小bufSize读取文件内容
int getLen = ifs.gcount(); // 实际读取数据大小
ifs.read(( char * )buffer, bufSize); // 按照指定的大小bufSize读取文件内容
int getLen = ifs.gcount(); // 实际读取数据大小
另外得到文件大小的方式如下:
ofstream ofs(
"
d:/666
"
, ios::binary);
//
要处理的文件
ifs.seekg ( 0 , ios::end); // 文件指针指向末尾
int length = ifs.tellg(); // 得到文件的长度
ifs.seekg ( 0 , ios::beg); // 文件指针回到文件首部
ifs.seekg ( 0 , ios::end); // 文件指针指向末尾
int length = ifs.tellg(); // 得到文件的长度
ifs.seekg ( 0 , ios::beg); // 文件指针回到文件首部
最后
以上就是着急睫毛膏为你收集整理的使用C++数据流处理文件时获得实际数据大小的全部内容,希望文章能够帮你解决使用C++数据流处理文件时获得实际数据大小所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复