Как я могу удалить определенные символы в строке в C ++? - PullRequest
0 голосов
/ 01 октября 2018

Например, если я беру строку ниже.

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

Я бы хотел игнорировать все символы, которые не являются скобками или фигурными скобками, в результате.

"{{(())}}"

Какой метод будет наиболее эффективным.

1 Ответ

0 голосов
/ 01 октября 2018

Вы не указали, как именно вы получаете строку, но рассматриваете:

std::string str = "{{((A+b)-xyz)addf}sss}";

Вы можете использовать идиому erase-remove.Мы указываем пользовательское средство удаления, которое будет функцией (на самом деле лямбда-функтором), которая будет проверять, не является ли символ фигурной скобкой или скобкой.

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 превратится в: {{(())}}.

...