C++ 文件读写库小析

来源:互联网 发布:淘宝上买iphone4s 编辑:程序博客网 时间:2024/06/05 07:17

对于C++而言最关键的是有找到合适库。因为C++ 的库并不像JAVA 那么统一规范,在开发过程中总是需要根据具体需求到网上或者手头上存有的类库当中或许相关的API 函数。 而API 的学习成本对开发效率而言成为了一大瓶颈。这是笔者在开发C++ 时感触最深,也是消耗时间最多的地方,

这篇博客主要是对文件的读写操作进行一个总结。
鉴于C语言的API 函数逻辑结构的分散性,不方便学习和记忆,整体学习成本较高 ,对于C 语言的API 函数不做考虑

经过一番google 大法之后,物色到的相对有点 OOP 风格,可快速查看API 文档的类主要 为
STL::ios::iosteam
MFC::CAtlfile

先将代码贴上

stl::ios::iosteam

“` cplus

    ifstream read_file("c:test.txt", std::ios::binary);    read_file.seekg(0, read_file.end);    long nsize = read_file.tellg();    read_file.seekg(0 ,read_file.beg);    char * buff = new char[nsize+1];    read_file.read(buff, nsize);    buff[nsize] = 0;    read_file.close();    ofstream write_file("c:write.txt", std::ios::binary);    write_file.write(buff, nsize );    write_file.close();    delete buff;

MFC: catlfile

“` c++

CAtlFile afile;afile.Create(_T("c:test.pdf"), GENERIC_READ, FILE_SHARE_READ, OPEN_ALWAYS);ULONGLONG nsize = 0;afile.GetSize(nsize);char *buf = new char[nsize];afile.Read(buf, nsize);afile.Close();// unstable operation afile.Create(_T("c:test\\output.pdf"), GENERIC_WRITE, FILE_SHARE_WRITE, OPEN_ALWAYS);afile.Write(buf, nsize);afile.Close();delete buf;

总结

从整体上看,STL的库较为接近C系,比较原始, 基本上所有的操作都比较接近原子操作,封装程度不是很高,但是由于其面向对象的特性,以及较好的文档支持,处于基本可以使用。
缺点: 对于文件读取过程中,不会自动添加结束符,数据读到内存当中后需要手动添加,否者显示时会出乱码

MFC::CAtlfile
优点: 封装性较高,函数个数较少,可以快速上手
缺点:严重依赖windows 平台 API 函数,相关参数的配合creat()函数
较为繁琐,很难集中,

0 0
原创粉丝点击