确定指针在文本文件中的位置

时间:2013-01-16 09:29:39

标签: c++ pointers text-files

假设我有一个文本文件

ID       Name         A1      B1       C1     D1
1234567  Bob Persie   12.1    33.0     44.0   55.0
7654321  Tom Hard     12.2    13.0     31.0   3.0

我需要附上一句话:与单词交谈:汤姆所以它看起来像这样

ID       Name         A1      B1       C1     D1
1234567  Bob Persie   12.1    33.0     44.0   55.0
7654321  Tomtalking Hard     12.2    13.0     31.0   3.0

我知道我需要使用readt.seekp函数将指针设置为单词中字母'm'之后的位置:Tom。

我无法确定字母'm'的位置。

readt.seekp(position,ios :: beg);

2 个答案:

答案 0 :(得分:2)

你必须重写整个文件,你不能只是像文本编辑器一样插入一些文本,你只能覆盖现有的内容并附加到文件的末尾。

一种可能的解决方案可能是逐行阅读,按摩线,逐行写入临时文件,最后将临时文件重命名为原始文件名。

按摩时,做一个字符串替换。所以:

source = open(sourcename, read-only)
(temp, tempname) = tempfile(write-only)

for each line in source:
    line.replace("Tom", "Tomtalking")
    temp.write(line)

close(temp)
close(source)
rename(tempname, sourcename)

答案 1 :(得分:1)

逐行读取整个文件 - 例如,在字符串向量中,执行您需要的追加并覆盖文件。这是比seekp更常见,更简单的方法。