1

私がテキストファイルを持っていると仮定して

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関数を使用して、単語「Tom」の文字「m」の後の位置にポインターを設定する必要があることはわかっています。

文字「m」の位置を判別するのに問題があります。

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

4

2 に答える 2

2

ファイル全体を書き直す必要があります。テキスト エディターから慣れているようにテキストを挿入するだけではいけません。既存のコンテンツを上書きしてファイルの末尾に追加することしかできません。

考えられる解決策の 1 つは、1 行ずつ読み取り、その行をマッサージし、1 行ずつ一時ファイルに書き込み、最後に一時ファイルの名前を元のファイル名に変更することです。

マッサージの場合は、弦交換を行います。そう:

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)
于 2013-01-16T09:38:28.247 に答える
1

ファイル全体を1行ずつ読み取ります-たとえば、文字列のベクトルに、必要な追加を行い、ファイルを上書きします。これは、seekp よりも一般的で簡単な方法です。

于 2013-01-16T09:39:27.100 に答える