我试图找到一种方法来用新行替换文件中包含字符串的行。

如果文件中不存在该字符串,则将其附加到文件中。

有人可以提供示例代码吗?

编辑:如果我需要替换的行位于文件末尾,还有吗?

最佳答案

尽管我认识到这样做不是最聪明的方法,但是下面的代码逐行读取demo.txt并搜索仙人掌一词以将其替换为橙色,同时将输出写入名为result.txt的辅助文件中。

不用担心,我为您节省了一些工作。阅读评论:

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>

using namespace std;


int main()
{
  string search_string = "cactus";
  string replace_string = "oranges";
  string inbuf;
  fstream input_file("demo.txt", ios::in);
  ofstream output_file("result.txt");

  while (!input_file.eof())
  {
      getline(input_file, inbuf);

      int spot = inbuf.find(search_string);
      if(spot >= 0)
      {
         string tmpstring = inbuf.substr(0,spot);
         tmpstring += replace_string;
         tmpstring += inbuf.substr(spot+search_string.length(), inbuf.length());
         inbuf = tmpstring;
      }

      output_file << inbuf << endl;
  }

  //TODO: delete demo.txt and rename result.txt to demo.txt
  // to achieve the REPLACE effect.
}

10-04 14:17