c++ - 如何在 C++ 中删除字符串中的某些字符?
问题描述
例如,如果我正在接受下面的字符串。
"{{((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
变成:{{(())}}
。
推荐阅读
- javascript - 在异步 AWS Lambda 函数中使用带有 node-fetch 模块的 node.js 时遇到问题
- javascript - 带有 iframe 的 div,不显示
- visual-studio-code - 如何在不更改主题的情况下更改 Visual Studio Code 的配色方案?
- python - 为什么在 Python Pandas 中,浮点条件可以删除数据框中的对象?
- python - 在python中将数据附加到.csv文件时删除空行,每次添加数据时行跳转1个空行
- android - 如何获取内部测试的选择加入 URL?
- java - 添加列表时绑定必须为正?
- javascript - Object becomes read-only after the component rendered first time
- amazon-cognito - 是否可以在具有联合身份的访客访问的后续会话中识别出用户是同一未经身份验证的用户?
- vim - 我们可以结合使用 Vim Plugins: Ultisnips 和 youcompleteme 来使用库函数原型吗