例如,如果我输入下面的字符串。
"{{((A+b)-xyz)addf}sss}";
因此,我想忽略所有不是括号或大括号的字符。
"{{(())}}"
哪种方法最有效。
答案 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
变成:{{(())}}
。