Разбор std :: string для выбора символов - PullRequest
2 голосов
/ 07 ноября 2011

Есть ли простой способ разобрать std::string в поиске списка определенных символов? Например, допустим, пользователь вводит this<\is a.>te!st string. Я хотел бы быть в состоянии обнаружить эти не-буквенные символы и что-то с этим сделать. Я ищу решение общего назначения, которое позволяет мне просто указать список char с, чтобы я мог повторно использовать функцию в различных ситуациях. Я предполагаю, что регулярные выражения будут играть ключевую роль в любом решении, и, очевидно, чем компактнее и эффективнее, тем лучше.

Ответы [ 3 ]

5 голосов
/ 07 ноября 2011

Вы можете использовать для этого std::string::find_first_not_of().Он найдет персонажей, кроме тех в наборе, который вы ему дадите.Его аналог, find_first_of(), будет искать символы, которые равны в наборе.

Обе функции позволяют указать начальный индекс.Это позволит вам продолжить поиск с того места, где вы остановились.

2 голосов
/ 07 ноября 2011

Как насчет использования библиотеки регулярных выражений, такой как boost :: regex ?
Это должно точно делать то, что вы ищете.
Если ваш компилятор поддерживает C ++ 11, вы можете использовать std :: regex.

0 голосов
/ 07 ноября 2011

Regex кажется излишним. Вы можете использовать std::string методы: find_first_of() и / или find_last_of(). Здесь вы можете найти документацию и примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...