如何在文本文件C++中查找并替换一行数据

Pap*_*urf 5 c++ io text file

我正在尝试在 C++ 中查找并替换文本文件中的一行数据。但老实说我不知道​​从哪里开始。

我正在考虑使用 ReplaceNumber.open("test.txt", ios::in | ios::out | ios_base::beg | ios::app);

要在开头打开文件并附加到它上面,但这不起作用。

有谁知道完成此任务的方法?

谢谢

编辑:我的文本文件只有一行,它包含一个数字,例如 504。然后用户指定要减去的数字,然后该结果应替换文本文件中的原始数字。

th3*_*0id 2

是的,您可以使用 std::fstream 来完成此操作,这是一个示例实现。您打开文件,迭代文件中的每一行,并替换任何出现的子字符串。替换子字符串后,将该行存储到字符串向量中,关闭文件,使用 重新打开它std::ios::trunc,并将每行写回到空文件中。

std::fstream file("test.txt", std::ios::in);

if(file.is_open()) {
    std::string replace = "bar";
    std::string replace_with = "foo";
    std::string line;
    std::vector<std::string> lines;
    
    while(std::getline(file, line)) {
        std::cout << line << std::endl;
        
        std::string::size_type pos = 0;
        
        while ((pos = line.find(replace, pos)) != std::string::npos){
            line.replace(pos, line.size(), replace_with);
            pos += replace_with.size();
        }
        
        lines.push_back(line);
    }

    file.close();
    file.open("test.txt", std::ios::out | std::ios::trunc);
    
    for(const auto& i : lines) {
        file << i << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)