- 締切済み
ファイル内の文字列を検索して該当行を置換するには?
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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Trick--o--
- ベストアンサー率20% (413/2034)
1.読み込みファイルを開く(test.txt) 2.書き込みファイルを開く(test.tmp) 3.前述 4.ファイルを閉じる 5.読み込みファイルを開く(test.tmp) 6.書き込みファイルを開く(test.txt) 7.読み込み→書き込み 8.ファイルを閉じる 9.test.tmpを削除する
- Trick--o--
- ベストアンサー率20% (413/2034)
1.一行読む 2a.該当行なら新しい行を書き込む 2b.非該当行ならそのまま書き込む 3.EOFまで(全部読み終わるまで)繰り返す ではだめですか?
お礼
レスありがとうございます。ご教授いただいた方法でも全然問題ないです。 試しに、以下のようにしてみたのですが、ファイルへは何も書き込まれませんでした。何が悪いのでしょうか? 根本的な考え方が違うならば、ご指摘ください。 具体的にコードを示して頂けるとありがたいです。 while(!fs.eof()) { fs.getline(buf,sizeof(buf)); if(strstr(buf, "No=")) { fs.write("No=12345",sizeof(buf)); } }