C++文件操作
时光清浅,不觉多年
凡是过往,皆为序章。
展开
-
C++对于文件的操作(4)——更改文件指定位置的数据(在新旧数据长度不一致的情况下)
上篇博客说到了在“新旧长度一致”的情况下如何更改文件制定位置的数据,这一篇就来说明一下如何在新旧长度不一致的情况下更改文件中某一行的数据。具体的思路主要是:遍历行→保存行→更改指定行→保存后面的行→重写文件。简而言之,找到需要修改的行,然后修改之,保存前面的数据,保存后面的数据,重写即可。示例代码如下:void modifyFile(const string & fileName){ if (!fileName.empty()) { fstream file(fileName, i原创 2021-01-26 13:48:45 · 915 阅读 · 1 评论 -
C++对于文件的操作(3)——更改文件指定位置的数据(在新旧数据长度一致的情况下)
如果需要对于文件的某一个位置(或者是某一段位置)进行修改(前提是大小长度一致,这点一定要注意),一个可行的方法就是定位到需要改的地方,然后直接替换,然后重写这段数据。这里面需要用到的就是定位函数,和瞬移函数(`・ω・´),主要是tellg,tellp,seekg, seekp,这四个函数的具体的使用详见文章末尾的参考链接,这里只简单进行说明一下,tellg和tellp是用来获得文件句柄额当前位置的,而seekp、seekg是将文件句柄跳跃到具体的位置的。ifstream 类和 fstream 类有 s原创 2021-01-26 12:21:35 · 1725 阅读 · 0 评论 -
C++对于文件的操作(2)—— 使用istringstream实现split功能
因为这个软件的功能涉及到字符串的切割并重组,不过因为string中没有split函数,因此就想自己写一个字符串分割函数。在网上查阅了相关的资料之后,发现istringstream流可以实现这个功能。istringstream流可以绑定任意的string字符串,并且可以像fstring似的把被操作的对象当成一个“流”进行处理,并且istringstream有一个getLine函数的重载函数,可以实现对于指定分隔符的分割操作。注意,在使用istringstream之前,需要包含他的头文件sstream,代原创 2021-01-26 11:48:50 · 370 阅读 · 0 评论 -
C++对于文件的操作(1)—— 使用fstream执行对于文件的读写操作
以前读写文件一般使用的是Qt的QFile类,不过这次因为这个软件需要比较小巧,使用Qt就不算方便了,因为使用Qt的话,在打包的时候会链接上各种东西。因此,最后决定直接使用C++的fstream类进行读写(至于为什么不适用C的方式,主要原因在于C++在这方面控制的要比C好)。示例代码如下:void readFile(const string& fileName){ fstream file(fileName, ios::in); if (!file.is_open()) { ce原创 2021-01-26 11:21:39 · 471 阅读 · 0 评论