2010-12-09 2 views
1

У меня есть std :: wstring, и я хочу найти, какой символ находится в верхнем корпусе, а какие - в нижнем регистре. std :: isupper и islower кажется , чтобы работать только с символами ASCII, но я хочу, чтобы узнать все типы символов верхнего и нижнего регистраisupper и islower для wstring

например. á - «латинская маленькая буква a с острым» , а Á - «латинская заглавная буква A с острым» аналогично ä и Ä - нижние и верхние регистровые буквы.

Есть ли какая-либо функция (mfc, boost или в любой другой библиотеке), которую я могу использовать, если персонаж имеет нижний или верхний регистр (независимо от языкового стандарта)?

Заранее спасибо

Рахул

ответ

3

Большинство реализаций будет предоставлять функции iswXxx, т.е. iswupper и iswlower. Большая проблема заключается в том, что кодировка, используемая в строках с широким символом, не определена и поэтому значения определяются как верхние и нижние регистры, которые действительно соответствуют целевой платформе. (Обратите внимание, что функции iswXxx не соответствуют стандарту)

EDIT: И Билл - идиот! Шаблон, указанный в <locale> для std::isupper, принимает как char s, так и wchar_t s. (Но для этого требуется объект локали)

+0

ОК, поэтому в основном я хочу, чтобы unicode знал функции isLower/isUpper для VC++. но я пока не мог найти. – 2010-12-09 08:31:41

Смежные вопросы