電子書籍の厳選無料作品が豊富!

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

A 回答 (2件)

1.読み込みファイルを開く(test.txt)


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

1.一行読む


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

ではだめですか?
    • good
    • 0
この回答へのお礼

レスありがとうございます。ご教授いただいた方法でも全然問題ないです。
試しに、以下のようにしてみたのですが、ファイルへは何も書き込まれませんでした。何が悪いのでしょうか?
根本的な考え方が違うならば、ご指摘ください。
具体的にコードを示して頂けるとありがたいです。

while(!fs.eof())
{
fs.getline(buf,sizeof(buf));
if(strstr(buf, "No="))
{
fs.write("No=12345",sizeof(buf));
}
}

お礼日時:2006/02/13 15:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!