jujiawu1024
2016-03-05 12:46
采纳率: 97.3%
浏览 2.0k

VC++ 6.0文本文件分行读取MFC读文件的问题

VC++ 6.0文本文件分行读取,怎么样返回上一行,getline怎么才能往前读取行呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2016-03-05 23:28
    已采纳

    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();
    先一次性读取到内存,然后通过下标读取

    打赏 评论
  • xSeeker~ 2016-03-05 13:24

    首先要知道当前行的字符个数x,上一行的字符个数y,然后使用fseek()函数从当前位置往后移动x+y个字符,然后再getline就可以读上一行数据了

    打赏 评论
  • Jimbo 2016-03-05 13:43

    缓存读到的内容啊,再取就容易了

    打赏 评论
  • 忘世麒麟 2016-03-05 14:58

    我想你的思路很乱!
    方法一:不管是使用MFC::CFILE 还是C++的fstream去读取文件,其实思路都是一样的。至于你说的读取了一行后返回上一行的问题,我提供的思路如下:
    在打开文件后,你每读取一行,就会用一个变量去接受读取到的内容(getline的第二个参数)。比如说while(getline(ifstream fin,string temp)),在这里是temp保存了你的内容。当你读取的是第一行,那上一行的内容肯定是目前读取位置减去temp.length()后的位置,此时为_ios_base::beg(文件起始位置)
    ;接下来读取的行的时候,你想保存这一次读取到的位置,用一个变量标记,比如说是flag,那么当你读取完这一行,要反会上一行的位置时候,你返回flag

    就行了!这里用一个迭代直到读取到文件的末尾,你都可以正确的返回到上一行的位置

    方法二:将内容读取到内存中去,比如你用一个vector来保存你读取出来的所有行的内容,vector中的任何一个元素对应一行,然后你
    只要像操作数组一样操作vector就行了。

    打赏 评论

相关推荐 更多相似问题