【发布时间】:2015-09-08 08:56:22
【问题描述】:
我正在使用ifstream 来解析 C++ 代码中的文件。我无法使用seekg() 和tellg() 跳转到代码的特定行。
我特别想用 getLine 方法从文件的特定位置读取一行。上一次迭代中保存的位置。
【问题讨论】:
-
“上一次迭代中保存的位置”是什么意思。?你在什么意义上迭代?如果您正在遍历文件,您可以调用
getline(my_ifstream, my_string)依次读取每一行。如果您有一个完整的行号并希望从文件中实际上不相关的位置跳转到该行,则需要从某个已知行位置(例如位置 0 处的第 1 行)读取并在进行时计算换行符。 -
@TonyD 是的,我正在遍历文件,但在某些时候我会停下来处理另一个文件。然后在那之后,我想从第一个文件使用'getline(my_ifstream,my_string)'之前读取的最后一行重新开始。
-
每个
ifstream保持其自己的输入位置 - 如果您对不同的文件使用不同的ifstream对象,您可以继续阅读您在第一个文件中中断的行,而不会产生任何麻烦。如果实在想用同一个ifstream,可以调用tellg获取当前位置,稍后再调用seekg恢复。 -
@TonyD 感谢您的帮助。