www.rtmj.net > 怎么用标准的C++中的 FstrEAm 类来获得文件大小

怎么用标准的C++中的 FstrEAm 类来获得文件大小

使用指针 例子:#include using namespace std;int main(){char buffer[1024];int pos=10; //跳过10个字节ifstream fl;fl.open("c:\\1.txt",ios::in);fl.seekg(pos,iso::beg);fl.read(buffer,1024);fl.close();}

如果是用标准库实现,可以这样.long size;file *fp;fp=fopen("file","rb");fseek(fp,0,seek_end);size=ftell(fp);flcose(fp);

#include int main (){ FILE * pFile; long size; pFile = fopen ("file.cpp","rb"); if (pFile==NULL) perror ("Error opening file"); else { fseek (pFile, 0, SEEK_END); ///将文件指针移动文件结尾 size=ftell (pFile); ///求出当前文件指针距离文件开始的字节数 fclose (pFile); printf ("Size of file.cpp: %ld bytes.\n",size); } return 0;}

MFC的话,用cfile::SeekToEnd()的返回值.STL的话,这个是参考代码.用的是ifstream的tellg()方法.#include #include int main(int argc, char* argv[]){ std::ifstream ifstr("123"); ifstr.seekg( 0 , std::ios::end ); std::cout 评论0 0 0

有可能你的TXT内的文本编码是unicode码.它会比正常的ANSI码在开始的地方多两个字节(FF FE).你把文本另存为ANSI码,应该就可以正常显示了.

1)首先用fopen用二进制方式打开文件2)用fseek定位到文件最后3)用ftell返回位置就是你要的.4)用fclose关闭文件

顺序读取或者不打算自己处理缓冲的话用file mapping可是替你省很大的事.另外可以使用操作系统级的API,Windows有SetFilePositionEx Linux有lseek64.另外Windows有fseek64不知道别的地方有没有.

#include<iostream> #include<fstream> using namespace std; int main(){ int i=1; char c[1000]; ifstream ifile1("d:\\a.txt"); //在d盘建立.txt文件 ifstream ifile2("d:\\b.txt"); ofstream ofile("d:\\c.txt"); while(!ifile1.eof()){ ifile1.getline(c,999); ofile<<c<

一、ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代< fstream.h>,所有的C++标准头文件都是无后缀的.).这是 <iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作.

头文件:windows.hlong long fileSize; WIN32_FILE_ATTRIBUTE_DATA fi;GetFileAttributesEx(TEXT("C:\\1.dat"), GetFileExInfoStandard, &fi);fileSize = fi.nFileSizeHigh;fileSize = (fileSize << 32) | fi.nFileSizeLow; 然后fileSize就是你要的文件大小了

相关搜索:

网站地图

All rights reserved Powered by www.rtmj.net

copyright ©right 2010-2021。
www.rtmj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com