代码之家  ›  专栏  ›  技术社区  ›  Ignacio

如何用fstream替换特定行?

  •  -2
  • Ignacio  · 技术社区  · 8 年前

    我有这个:

    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();
    

    但是如果我同时使用它,它就不起作用了,txt中什么都没有写。

    有人知道我做错了什么?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Thomas Matthews    8 年前

    您可能想要尝试以下内容:

    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();
    }