2010-12-09 14 views
1

J'ai un std :: wstring et je veux trouver les caractères qui sont en haut et ceux qui sont en minuscules. std :: isupper et islower semble travailler sur les caractères ASCII, mais je veux être en mesure de trouver toutes sortes de caractères majuscules et minusculesisupper et islower pour wstring

par exemple á est une "petite lettre latine a avec aiguë" et Á est une "lettre majuscule latine A avec aiguë" de même et ä sont des lettres allemandes majuscules et minuscules.

Existe-t-il une fonction (mfc, boost ou dans une autre bibliothèque) que je peux utiliser pour savoir si un caractère est en minuscule ou en majuscule (sans tenir compte des paramètres régionaux) ?

Merci à l'avance

Rahul

Répondre

3

La plupart des implémentations vont fournir des fonctions iswXxx, à savoir iswupper et iswlower. Le gros problème est que l'encodage utilisé dans les chaînes de caractères larges n'est pas défini et donc quelles valeurs sont déterminées comme majuscules et minuscules sont vraiment à la plate-forme cible. (Notez que les fonctions iswXxx ne sont pas dans la norme)

EDIT: Et Bill est un idiot! Le modèle déclaré en <locale> pour std::isupper accepte à la fois char s et wchar_t s. (Mais il nécessite un objet locale)

+0

ok, donc, fondamentalement, je veux un isode fonctions Unlode/isUpper pour VC++. mais je ne pouvais pas trouver jusqu'à présent. –

+0

@Rahul: Les versions spécifiques aux paramètres régionaux que Billy indique sont EXACTEMENT ce que vous recherchez. – Goz

+0

yup, les ai, ils sont IsCharUpperW et IsCharLowerW de windows.h –