首页 > 解决方案 > 如何在 C++ 中删除字符串中的某些字符?

问题描述

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

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

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

"{{(())}}"

什么方法最有效。

标签: c++stringtruncate

解决方案


您没有指定如何准确获取字符串,但考虑到:

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


推荐阅读