0

ファイルを開いて、その QTextStream を取得しています。次に、readLine() を使用してストリームを 1 行ずつ読み取ります。行が特定の文字列に一致する場合、それを別の文字列に置き換える必要があります。行が完全に置き換えられる動作が必要です (つまり、行が「ロングワード」で、「単語」に置き換えた場合、行には「単語」と「単語」のみが含まれている必要があります)。

現時点では、seek() を使用してから、<< 演算子を使用して文字列を特定の場所に配置していますが、最後の文字列の残りが残っているため、「wordword」のようなものが残っています。これが起こらないようにし、前の行全体を新しい行に完全に置き換えるにはどうすればよいですか?

4

1 に答える 1

1

私の知る限り、テキスト ファイルのチャンクをその場で単純に削除することはできません。置換文字列のサイズが同じである場合は、それらの正確なバイトを置き換えることができる可能性があり、それが短い場合は、空のスペースを null で埋めることによって問題を回避できる可能性があります。

それをしたくない場合は、新しいファイルを作成し、古いファイルから各行を読み取り、メモリ内のその行に必要な変更を加えてから、その行を新しいファイルに書き出す必要があります。これが完了したら、元のファイルを新しいファイルに置き換えることができます。

ファイルにチャンクを追加したり、ファイルからチャンクを削除したりできる場合は、HDD にかなり断片化されたファイルが残る可能性があります。より多くの文字を挿入する必要がある場合は、古いデータが占めるスペースに新しいデータが収まりきらず、データを削除するとファイルに穴が残るため、余分なフラグメントを作成する必要があります。

于 2011-11-29T12:21:10.760 に答える