问题描述
- VC++ 6.0文本文件分行读取MFC读文件的问题
-
VC++ 6.0文本文件分行读取,怎么样返回上一行,getline怎么才能往前读取行呢?
解决方案
vector string;
ifstream inout;
inout.open(文件名,ios::in);
while(inout.getline(nextline, sizeof(nextline)))
{
temp_str = nextline;
v.pushback(temp_str);
}
inout.close();
inout.clear();
先一次性读取到内存,然后通过下标读取
解决方案二:
首先要知道当前行的字符个数x,上一行的字符个数y,然后使用fseek()函数从当前位置往后移动x+y个字符,然后再getline就可以读上一行数据了
解决方案三:
缓存读到的内容啊,再取就容易了
解决方案四:
我想你的思路很乱!
方法一:不管是使用MFC::CFILE 还是C++的fstream去读取文件,其实思路都是一样的。至于你说的读取了一行后返回上一行的问题,我提供的思路如下:
在打开文件后,你每读取一行,就会用一个变量去接受读取到的内容(getline的第二个参数)。比如说while(getline(ifstream fin,string temp)),在这里是temp保存了你的内容。当你读取的是第一行,那上一行的内容肯定是目前读取位置减去temp.length()后的位置,此时为_ios_base::beg(文件起始位置)
;接下来读取的行的时候,你想保存这一次读取到的位置,用一个变量标记,比如说是flag,那么当你读取完这一行,要反会上一行的位置时候,你返回flag
就行了!这里用一个迭代直到读取到文件的末尾,你都可以正确的返回到上一行的位置
方法二:将内容读取到内存中去,比如你用一个vector来保存你读取出来的所有行的内容,vector中的任何一个元素对应一行,然后你
只要像操作数组一样操作vector就行了。