如何用fstream替换特定的行?

时间:2017-09-23 17:23:11

标签: c++ replace fstream

我有这个:

std::fstream fullscreenData("variables/fullscreenData.txt", std::ios::in | std::ios::out);

            while (std::getline(fullscreenData, *streamString)) {
            *streamString = static_cast<std::string>("Fullscreen: false");
                if (*streamString == static_cast<std::string>("Fullscreen: false")) {

                    fullscreenData << "Fullscreen: true\n";
                }
            }
            fullscreenData.close();

我正在测试adn我可以使用“while”和“if”来读取txt,以及“fullscreenData&lt;&lt;”写入txt。 但是,如果我一起使用它不起作用,txt中没有任何内容。

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

您的数据类型存在问题。

你可能想尝试这样的事情:

std::streampos  position_line_begin(0);
std::string     text;
while (std::getline(fullScreenData, text))
{
  if (text == "Fullscreen: false")
  {
     fullScreenData.seekp(position_line_begin);
     fullScreenData << "Fullscreen: true \n";
     break;
  }
  position_line_begin = fullScreenData.tellg();
}

有更好的方法,但这证明了算法。