• 締切済み

ファイル内の文字列を検索して該当行を置換するには?

C++にて"test.txt"内を検索して"No=00000"という行を"No=12345"に書き換えてファイルを上書き、 という処理をするプログラムを作成したいのですが、どのようにファイルへ書き込みをすればよいのか が分かりません"No=00000"の行を置換するまではできたのですが、置換した文字列で元の文字列を上書きするには どうすれば良いのでしょうか? それとも以下のソースでは根本的に考え方が違うのでしょうか?初歩的な質問で恐縮ですが、よろしく お願い致します。 *************************************** //test.cpp #include <string> #include <fstream.h> void main() { fstream fs; char buf[512]; fs.open("test.txt",ios::in | ios::out); while(!fs.eof()) { fs.getline(buf,sizeof(buf)); if(strstr(buf, "No=")) { std::string aa; aa=buf; aa.replace(3,5,"12345"); //ここからの処理が分かりません・・・ } } } ************************** test.txtは以下の通り Name=test No=00000 ←この行だけ書き換えたい。 Address=hoge

みんなの回答

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

1.読み込みファイルを開く(test.txt) 2.書き込みファイルを開く(test.tmp) 3.前述 4.ファイルを閉じる 5.読み込みファイルを開く(test.tmp) 6.書き込みファイルを開く(test.txt) 7.読み込み→書き込み 8.ファイルを閉じる 9.test.tmpを削除する

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

1.一行読む 2a.該当行なら新しい行を書き込む 2b.非該当行ならそのまま書き込む 3.EOFまで(全部読み終わるまで)繰り返す ではだめですか?

komainusi
質問者

お礼

レスありがとうございます。ご教授いただいた方法でも全然問題ないです。 試しに、以下のようにしてみたのですが、ファイルへは何も書き込まれませんでした。何が悪いのでしょうか? 根本的な考え方が違うならば、ご指摘ください。 具体的にコードを示して頂けるとありがたいです。 while(!fs.eof()) { fs.getline(buf,sizeof(buf)); if(strstr(buf, "No=")) { fs.write("No=12345",sizeof(buf)); } }

関連するQ&A