filename: replace.cpp
#include <string>
#include <iostream>
std::string& replace_all(std::string& str, const std::string& oldval, const std::string& newval)
{
while(true)
{
std::string::size_type pos(0);
pos = str.find(oldval);
if( pos != std::string::npos )
{
str.replace(pos, oldval.length(), newval);
}
else
{
break;
}
}
return str;
}
std::string& replace_all_distinct( std::string& str, const std::string& oldval, const std::string& newval)
{
for( std::string::size_type pos(0); pos != std::string::npos; pos += newval.length() )
{
if( (pos = str.find(oldval, pos)) != std::string::npos )
{
str.replace(pos, oldval.length(), newval);
}
else
{
break;
}
}
return str;
}
int main()
{
std::string str = "hello11hello11hello11";
std::string oldval = "11";
std::string newval = "888";
str = "hello11hello11hello11";
std::string strfin = replace_all(str, oldval, newval);
std::cout << strfin << std::endl;
std::cout << replace_all_distinct(str, oldval, newval) << std::endl;
std::cout << "final string: " << strfin << std::endl;
oldval = "888";
newval = "";
std::string fs1 = replace_all( strfin, oldval, newval );
std::cout << "result:" << fs1 << std::endl;
}
编译:g++ -g -o hello replace.cpp
执行:./hello
执行结果:
hello888hello888hello888
hello888hello888hello888
final string: hello888hello888hello888
result: hellohellohello