是的,您可以使用 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)