【问题标题】:How can I delete certain characters in a string in c++?如何在 C++ 中删除字符串中的某些字符?
【发布时间】:2018-09-30 21:19:54
【问题描述】:

例如,如果我正在接受下面的字符串。

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

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

"{{(())}}"

哪种方法最有效。

【问题讨论】:

  • 您可以读取它以缓冲并仅将所需的字符复制附加到另一个std::string,或者通过char 读取char 并丢弃不需要的字符。到目前为止,您尝试过什么?
  • 查看 std::regex 或 QRegularExpression 等

标签: c++ string truncate


【解决方案1】:

您没有具体说明如何获取字符串,但考虑到:

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 变成:{{(())}}

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多