问题描述
- 请问C++里面如何用类似next( )的方法调用文件的每一行数据
-
我知道如何用 getline 读取每一行数据,但是,我现在想要先读完整个文件,然后在另外一个method中通过类似next( ) 的方法把那个文件中的下一行调用出来
比如说,我现在有一个文件有1000行,每行两个数字。我想在一个update( )方法中每次调用下一行的数据(只调用一行),但是这个文件本身在另外一个
method中读取(因为如果也在update( )中读取的话每次就重新来过了),请问这个如何实现呢?
解决方案
文件比较小,开个缓存以下,数据全取出
然后采取,全局变量,(这个是C的方法,因为C 没有隐含参数,只能传递参数,或者通过全局变量来处理)
或者类似全局变量的办法(定义一个类,update() 编写为类的方法,用一个变量记录当前行数等状态,并在使用 这个类的程序里面,定义一个该类的对象)
文件大,可以开小一点的缓冲,先储存一部分数据,需要时把其它数据调入内存
解决方案二:
char* fbuffer = new char[filesize]
解决方案三:
这个属于迭代器模式
参考:
http://www.cnblogs.com/onlycxue/archive/2013/12/25/3490738.html
迭代器内部维护一个文件指针即可。
解决方案四:
用个容器来读文件吧,一下全部读完,以行为单位的放在容器中。
然后对容器进行处理。
时间: 2024-12-29 18:06:52