C++用getline读的文件,如何让文件指针退一行。

我是用string的成员函数getline对文件进行读取,读取后,需要根据下一行的内容判断是否需要退一行。也就是getline后,我想让文件指针再退回到getline以前的位置,以便下次调用getline时读取的是同一行内容。

在调用getline之前,先调用tellg()得到当前位置,然后getline(),需要返回的时候调用seekg()。示例代码:

ifstream ifs(...);
...
std::streampos pos = ifs.tellg();
ifs.getline(.....);
ifs.seekg(pos);
...
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-09
  在调用getline之前,先调用tellg()得到当前位置,然后getline(),需要返回的时候调用seekg()。
  代码如下:
  #include <iostream>
  #include <fstream>
  #include <string>
  using namespace std;
  void main()
  {
  string s; char ch[500000];
  ofstream ob1("ab.txt");
  ifstream ifs("exex.txt");
  while(ifs)
  {
  getline(ifs,s);
  if(ifs)
  // index++;
  // ob1<<s;
  ifs>>ch;
  ob1<<ch<<" ";
  cout<<ch<<" ";
  }
  }本回答被网友采纳
第2个回答  2010-10-27
存储一下上次的文件指针,需要后退时调用一下fseek
相似回答