我正在使用这个代码完全用我想要替换的任何字符串替换字符串,但首先这个代码将文本文件复制到另一个临时文件,我不想这样做我只想替换那个字符串文件只有可能吗?如果是,怎么样,请举个例子?
这是我的代码:
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
char *buffer = "Who";
string search_string = buffer;
string replace_string = "oranges";
string inbuf;
fstream input_file("c:\\file.txt", ios::in);
ofstream output_file("c:\\file1.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;
}
input_file.close();
remove("c:\\file.txt");
output_file.close();
rename("c:\\file1.txt","c:\\file.txt");
}
答案 0 :(得分:3)
只有搜索到的字符串和替换字符串的长度相同,或者搜索到的字符串位于文件的最末端时,才能提出要求。只有这样才能直接修改源文件。否则,如果两个字符串的长度不同,或者搜索的字符串位于文件的前面/中间,那么根本无法修改源文件,您必须创建一个单独的临时文件,然后在替换源文件时准备好了。