如何在字符串中找到多次出现的字符串? 在所有出现的情况下用另一个字符串替换找到的字符串? 说,我有以下字符串:
"A cat is going. It is black-white stripped."
我想用are替换所有出现的“is”。
答案 0 :(得分:3)
您可以使用Boost :: String。 IIRC,他们有一个find_all / replace_all函数来做到这一点。 Detail here
#include <boost/algorithm/string.hpp>
#include <iostream>
int main()
{
std::string s = "A cat is going. It is black-white stripped.";
std::cout << boost::algorithm::replace_all_copy(s, "is", "are") << std::endl;
}
答案 1 :(得分:0)
string。replace()
就是你想要的。看看here。当然,必须多次运行,直到您想要替换的字符串在string::npos
上返回find()
。试试这个:
int main(int argc, char *argv[]) {
if(argc != 3) {
cout << "Usage: <binary> <toFind> <toReplace>" << endl;
exit(1);
}
//string str(argv[1]);
string str = "A cat is going. It is black-white striped.";
string dest;
string toFind(argv[1]);
string toReplace(argv[2]);
cout << "Original string = " << str << endl;
while(str.find(argv[1]) != string::npos) {
size_t pos = str.find(argv[1]);
str.replace(pos, toFind.length(), toReplace, 0, toReplace.length());
}
cout << "Replaced string = " << str << endl;
return 0;
}
当然,仍有许多错误检查仍需要纳入此计划。比如说:
HTH,
斯利拉姆。