我有一个类Line
表示文件中的一行,GetText
成员函数读取该行,如下所示:
class Line {
streampos pos_;
ifstream &file_;
public:
Line(ifstream &f, streampos pos): pos_(pos), file_(f) { }
string GetText() const {
string line;
// Note the current pos and state
streampos tpos = file_.tellg();
iosbase::iostate state = file_.rdstate(); file_.clear();
file_.seekg(pos_, file_.beg);
getline(file_, line);
file_.seekg(tpos, file_.beg); file_.setstate(state);
return line;
}
};
我有这个程序应该打印文件的所有行,使用类:
streampos c = f.tellg();
while (getline(f, line)) {
Line l(f, c);
cout << l.GetText() << endl;
c = f.tellg();
}
请忽略我上面打印line
的脸部。当我在非常简单的输入文件上运行它时
This is line1
This is line2
This is line3
而不是打印出所有行,输出为:
This is line1
his is line2
&#39;&#39;缺少,第三行没有打印。甚至更奇怪的是,第二行的输出取决于行数!随机跳跃的问题是什么?我已经坚持了几个小时。