用g ++求文件中的一行

时间:2010-05-08 08:37:29

标签: c++ file-io g++

有没有办法可以寻找文件中的某一行来读取或写入数据?

假设我想在文本文件的第10行开始写一些数据。前几行中可能已有一些数据,或者文件甚至可能为空。有没有办法可以直接找到我想要的行,而不必担心文件中已有的内容?

4 个答案:

答案 0 :(得分:6)

仅当行的长度相同时(寻找9 * bytes_per_line)。否则,您只需要扫描到文件中的适当位置即可。

还要小心写入文件的中间位置。它可能无法达到您的预期(插入新行)。它只会覆盖已存在的任何内容,并且不会尊重现有的行边界。

答案 1 :(得分:5)

您可以搜索文件中的某个位置,但该位置必须是偏离开始,结束或当前位置的字符 - 请参阅例如fseek()。除非所有线都具有完全相同的长度,否则无法寻找特定的线。

答案 2 :(得分:1)

不,您必须处理数据才能找到行分隔符(除非您有固定的长度行)。看看getline(),ftell()和fseek()。 http://www.pixelbeat.org/programming/readline/cpp.cpp

答案 3 :(得分:0)

最简单的方法是读取内存中的文件,例如字符串向量中的每一行,然后修改/添加你想要的任何内容,并在新文件中重写每一行。

(假设文件适合内存)