如何在c ++中删除字符串中的某些字符?

-5 c++ string truncate

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

"{{((A+b)-xyz)addf}sss}";
Run Code Online (Sandbox Code Playgroud)

我想忽略所有不是括号或大括号的字符.

"{{(())}}"
Run Code Online (Sandbox Code Playgroud)

什么方法最有效率.

Fur*_*ish 6

您没有指定获取字符串的具体方式,但考虑到:

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