【发布时间】:2013-11-14 19:12:11
【问题描述】:
我是这样计算文件行数的
n = count(istreambuf_iterator<char>(file), istreambuf_iterator<char>(), '\n') + 1;
之后我想逐行阅读,但这不起作用,
while (!file.eof()) {
string row;
file >> row;
cout << row << endl;
}
因为我认为计数将位置移到了末尾。如果我重新打开文件它可以工作,但我想这是一个丑陋的解决方案。
有什么方法/成员函数可以回到起点吗?
【问题讨论】:
-
cin接受控制台输入,它不从文件中读取!使用std::getline看看是否可行。 -
对不起,我打错了。它将是文件 >> 行。
-
你对这些信息做了什么(计算的行号)?
-
seekg() 有效,谢谢,但为什么您建议另外调用 clear()?
-
以防 eof 由第一遍设置。
标签: c++ string file-io ifstream stdstring