从字符串中删除单词的所有出现

时间:2015-11-02 14:40:50

标签: c++ std

我有一个字符串,如:

AAAbbbbbAAA

我想删除模式AAA的所有出现以获取:

bbbbb

模式可以出现在字符串中的任何位置。

2 个答案:

答案 0 :(得分:2)

假设:

string yourstring("AAAbbbAAA");
string removestring("AAA");

您可以在字符串上多次运行类似的内容:

yourstring.erase(yourstring.find(removestring), removestring.length());

当然,在使用string::find之前,您必须检查string::erase是否确实发现了事件。

答案 1 :(得分:0)

这是代码。它效率不高,但效果很好,而且代码很小。

string h = "AAAbbbAAAB";

int pos = h.find("AAA");
while(pos!=-1)
{
    h.replace(pos, 3, "");
    pos = h.find("AAA");
}

cout << h << endl;

只有你知道模式才有效。如果它不是您想要的,也许您正在寻找模式匹配算法,如KMP。