Y> Мне надо сравнить два std::string без учета регистра. Я написал свою Y> функцию сравнения, все вроде Ok, но меня мучает такой вопрос: есть ли Y> стандартные средства (библиотечные) для такого сравнения? Если подробно и "правильно", там все очень долго и сложно, т.к. преобразование символов в разный регистр зависит от того, какой объект std::locale использовать и может приводить к разным сюрпризам вроде преобразования одного заглавного символа в несколько строчных и наоборот. Вкратце, более-менее "стандартным", (в смысле, что в нем используются только стандартные возможности) можно считать примерно такой вариант:
Приведенный код можно оптимизировать и оптимизировать, но наглядность его от этого не увеличится Существенным недостатком приведенного варианта является отсутствие поддержки преобразований, приводящих к преобразованию одного символа в несколько или наоборот, но основная идея использования std::locale для преобразования между регистрами должна быть ясна P.S. также можно воспользоваться какими-нибудь нестандартными расширениями, предоставленными поставщиком компилятора; например, _strcmpi. Posted via RSDN NNTP Server 1.6 RC1 |