void fun(string &s, string oldVal, string newVal)
{
string::size_type pos = 0;
//int pos = 0; //避免使用int等带符号类型来储存size_type
while (pos<s.length())
{
pos = s.find(oldVal, pos);//从零号位置开始查找
//if (pos >= s.length())
//break;//如果没有找到退出循环
if (pos == string::npos) //没找到则将pos置为string::npos
break;
s.erase(pos, oldVal.length());//如果找到,先删除原来的字符
s.insert(pos, newVal);//添加新的字符
//s.replace(pos,oldVal.length(),newVal);//和上面两句是等价
pos = pos + newVal.length();//移动pos位置
}
}
int main(int argc,char *argv[])
{
string s = "a tho tho thru";
fun(s, "tho", "ooo");
fun(s, "thru", "xxx");
cout << s << endl;
return 0;
}
编写一个函数,接受三个string参数是s、oldVal 和newVal。使用insert和erase函数将s中所有oldVal替换为newVal。
最新推荐文章于 2022-12-16 11:51:50 发布