从字符串中查找字符组

时间:2013-12-30 13:54:12

标签: c++ string replace find

我做了一个从字符串中删除一组字符的程序。我在下面给出了编码。

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; ='找到。我怎么能这样做?

2 个答案:

答案 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