例如,如果我正在接受下面的字符串。
"{{((A+b)-xyz)addf}sss}";
我想忽略所有不是括号或大括号的字符,结果。
"{{(())}}"
什么方法最有效。
您没有指定如何准确获取字符串,但请考虑:
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
变成:{{(())}}
。