替换文件中指定字符串
由于在文件中直接替换指定字符串需要字符串长度相同,故①先将当前文件内容按行读取 ②按行判断修改后写入临时文件 ③替换文件。即可完成需求。
std::ifstream inF;
//dst为需要替换字符串的文件
inF.open(dst);
std::string tempFile = dstFolder;
tempFile.replace(tempFile.size() - 1, 1, "1");
tempFile += ".vrt";
std::ofstream outF;
outF.open(tempFile);
char line[2048];
//1 按行读取
while (inF.getline(line,sizeof(line)))
{
std::string lineStr = line;
std::string::size_type pos = lineStr.find("first");
while(pos != std::string::npos)
{
lineStr.replace(pos, sizeof("first")-1, "second");
pos = lineStr.find("first");
}
//2 行内容替换后写入
outF << lineStr << std::endl;
}
inF.close();
outF.close();
//3 替换文件
if (_access(tempFile.c_str(), 0) == 0)
{
DeleteFile(dst);
MoveFile(tempFile.c_str(), dst);
}