如何在C ++中删除字符串中的某些字符?

时间:2018-09-30 21:19:54

标签: c++ string truncate

例如,如果我输入下面的字符串。

"{{((A+b)-xyz)addf}sss}";

因此,我想忽略所有不是括号或大括号的字符。

"{{(())}}"

哪种方法最有效。

1 个答案:

答案 0 :(得分:6)

您没有指定获取字符串的确切方式,而是考虑:

std::string str = "{{((A+b)-xyz)addf}sss}";

您可以使用erase-remove惯用语。我们指定一个自定义删除器,该删除器将是一个函数(实际上是lambda-函子),该函数将检查字符是否不是大括号或括号。

auto deleter = [](const char c){
    return c != '(' && c != ')' && c != '{' && c != '}';
};

然后我们使用erase-remove惯用语:

str.erase(std::remove_if(str.begin(), str.end(), deleter), str.end());

这将导致原始的str变成:{{(())}}