C ++文件操作:读取文件中的特定行。

时间:2011-04-24 08:21:18

标签: c++ file-io fstream

我想创建一个程序,它可以从文件中的某个点读取文件。 例如,如果我有一个包含此文本的文件:

1:
Hello world. THis is the first string

2:
Hello. This is the second string

3:
Hi!

所以,现在我必须提交文件,如何让程序只读取第二个字符串?

2 个答案:

答案 0 :(得分:3)

对于本质上是动态的文本文件,您将从头开始在循环中使用getline()。如果它不经常更改,你可以记录绝对文件位置,然后检查文件修改日期,以决定是否在自上一个循环getline()以来没有被修改的情况下进行直接搜索,或者再次循环。文件I / O例程中没有任何魔法可以记住每个字符串在文件中的结束位置。

答案 1 :(得分:1)

我不会为你写任何代码,只会说明我会这样做的方式。
假设:
字符串开始的格式,例如1:,2:等不会出现在字符串的内容中。

方法:

  1. 从文件的开头开始,每次都执行seekg()并递增get指针,除非你找到你正在看的2个字符,例如“2:”。 停在那里,开始提取你的内容,直到找到“number:”形式的下两个字符,例如“3:”。

  2. 如果您描述的文件格式是这样的,您可以使用getline()来获取每一行。这样您就不必移动每个字符的指针,但仅当文件中的数据采用某种格式时才有效。