• ベストアンサー

ファイル読み込みで一部分書き換えについて

C++でテキストファイルから先頭の一部分を読み込んで その一部分だけ更新するプログラムを作りたいんですけど どうすればよろしいでしょうか? テキストファイルの中身例(test.txt) AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA これを読み込んで ↓↓↓↓↓↓↓↓ たとえば先頭の三文字だけ変えたいとか(test.txt) BJDAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA これくらいの行数でしたら string s1,s2,s3; fin.open("test.txt"); fin>>s1; fin>>s2; fin>>s3; fin.close(); fout.open("test.txt"); fout<<s1<<"\n"; fout<<s2<<"\n"; fout<<s3<<"\n"; fout.close(); でもなんとかなりそうですけどもっと大量になったときにあまりに 行が長くなりそうなんで他の方法は何かないでしょうか? ちなみに関係あるか分かりませんがコンパイラはVisualC++2005です。

質問者が選んだベストアンサー

  • ベストアンサー
  • qwertfk
  • ベストアンサー率67% (55/81)
回答No.2

fstream fs("test.txt",ios::in | ios::out); fs << "BJD"; fs.close(); 文字数が変動しないなら、こんな感じの処理で書き換えることができます。 そうでない場合は、1行ずつ読み込んで書き換えたい行だけに操作を加えるといった処理をしなければならないと思います。

JIF0131
質問者

お礼

解答欄と補足欄間違えました、すみません。

JIF0131
質問者

補足

これは便利ですね、初めて知りました。 ありがとうございます。

その他の回答 (1)

  • maslkjh
  • ベストアンサー率45% (10/22)
回答No.1

もし行が多くなって行を短くしたいのであれば、 string s1, s2...の部分を配列にして、finとfoutの部分をfor()文でまわしてみてはどうでしょうか?

JIF0131
質問者

お礼

解答欄と補足欄間違えました、すみません。

JIF0131
質問者

補足

返答遅れました。 そういうやり方ありましたね、、頭にでてきませんでした。 ありがとうございます