我做了一个从字符串中删除一组字符的程序。我在下面给出了编码。
void removeCharFromString(string &str,const string &rStr)
{
std::size_t found = str.find_first_of(rStr);
while (found!=std::string::npos)
{
str[found]=' ';
found=str.find_first_of(rStr,found+1);
}
str=trim(str);
}
std::string str ("scott<=tiger");
removeCharFromString(str,"<=");
至于我的程序,我得到了正确的输出。好。精细。如果我给str的值为“scott = tiger”,那么在变量str中找不到可搜索的字符“&lt; =”。但是我的程序还会从值'scott = tiger'中删除'='字符。但我不想单独删除字符。我想删除字符,如果我只找到字符组'&lt; ='找到。我怎么能这样做?
答案 0 :(得分:0)
方法find_first_of
查找输入中的任何字符,在您的情况下,查找任何'&lt;'或'='。在您的情况下,您想使用find。
std::size_t found = str.find(rStr);
答案 1 :(得分:0)
这个答案的工作原理是你只想要按照确切的顺序找到一组字符,例如:如果您要删除<=
但不删除=<
:
find_first_of
将找到给定字符串中的任何字符,您可以在其中找到整个字符串。
您需要具备以下效果:
std::size_t found = str.find(rStr);
while (found!=std::string::npos)
{
str.replace(found, rStr.length(), " ");
found=str.find(rStr,found+1);
}
str[found]=' ';
的问题在于它只会替换您要搜索的字符串的第一个字符,因此如果您使用了该字符,则结果将是
scott =tiger
然而,随着我给你的改变,你会得到
scott tiger