Сравнение строк с измененным порядком символов - PullRequest
1 голос
/ 11 марта 2011

Как бы вы сравнили строки, когда символы ( и ) должны идти после буквенно-цифровых символов. Нужно ли писать функцию или есть какая-либо библиотечная функция?

Спасибо за ваши ответы!

Ответы [ 4 ]

2 голосов
/ 11 марта 2011

Вы можете использовать std::lexicographical_compare с пользовательским предикатом. Этот предикат должен принимать 2 символа и возвращать значение false, если первое должно предшествовать второму.

1 голос
/ 11 марта 2011

Нет встроенного способа сделать это. Вам придется написать свою собственную функцию сравнения / функтор. Однако я полагаю, что вы можете реализовать это с чертами характера, чтобы operator< все еще работал, но вы больше не будете использовать std::string.

1 голос
/ 11 марта 2011
  1. Скопировать обе строки, которые нужно сравнить с временными строками
  2. В обеих строках замените ( и ) символами, которые следуют после буквенно-цифровых символов в конкретной кодировке , которую вы используете
  3. Сравните обработанные результаты со стандартной функцией сравнения библиотек
  4. Использовать результат функции и избавиться от манипулируемых строк

Например, ( и ) предшествуют буквенно-цифровым символам в ASCII, но { и } идут после!

0 голосов
/ 11 марта 2011

В некоторых средах предусмотрены пользовательские последовательности сортировки, но, вообще говоря, вы должны написать свою собственную.

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