例如,如果我正在接受下面的字符串.
"{{((A+b)-xyz)addf}sss}";
Run Code Online (Sandbox Code Playgroud)
我想忽略所有不是括号或大括号的字符.
"{{(())}}"
Run Code Online (Sandbox Code Playgroud)
什么方法最有效率.
您没有指定获取字符串的具体方式,但考虑到:
std::string str = "{{((A+b)-xyz)addf}sss}";
Run Code Online (Sandbox Code Playgroud)
你可以用这个erase-remove成语.我们指定一个自定义删除器,它将是一个函数(实际上是一个lambda - 一个函子),它将检查一个不是大括号或括号的字符.
auto deleter = [](const char c){
return c != '(' && c != ')' && c != '{' && c != '}';
};
Run Code Online (Sandbox Code Playgroud)
然后我们使用erase-remove成语:
str.erase(std::remove_if(str.begin(), str.end(), deleter), str.end());
Run Code Online (Sandbox Code Playgroud)
这将导致原来的str变成:{{(())}}.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |