C++ std::string 字符串替换

std::string里面std::replace只有单字符替换

std::replace(str.begin(), str.end(), '\"', '@');//单字符替换-----将双引号换成@符

如果有字符串替换的话需要配合find()使用

/// 
/// 字符串批量替换
/// 
/// 输入的文本
/// 目标文本
/// 替换内容
/// 替换好的文本
std::string spp(std::string str, std::string a, std::string b)
{
	int oldPos = 0;
	while (str.find(a, oldPos) != -1)//在未被替换的文本中寻找目标文本
	{
		int start = str.find(a, oldPos);//找到目标文本的起始下标
		
		str.replace(start, a.size(), b);
		//从str[start]开始到str[a.size()]替换为b
		//str[start]到str[a.size()]也就是a所在得片段
		
		oldPos = start + b.size();//记录未替换文本的起始下标
	}
	return str;
}
int main()
{
    std::string str = "{\"QQ1\":123,\"QQ2\":123,\"QQ3\":123}";
    str = spp(str, "123", "321");
    std::cout << str << std::endl;
    str = spp(str, "\"", "\\\"");
    std::cout << str << std::endl;
}

C++ std::string 字符串替换_第1张图片

你可能感兴趣的:(c++,开发语言,算法)