Comment convertir une chaîne wchar_t de majuscules en minuscules en C++?Conversion d'une chaîne de caractères large en minuscule en C++
La chaîne contient un mélange de caractères japonais, chinois, allemands et grecs.
Je pensais à l'aide towlower ...
http://msdn.microsoft.com/en-us/library/8h19t214%28VS.80%29.aspx
.. mais la documentation dit que:
La conversion cas de towlower est spécifique à la localisation. Seuls les caractères pertinents pour les paramètres régionaux en cours sont modifiés dans le cas.
Modifier: Peut-être que je devrais décrire ce que je fais. Je reçois une requête de recherche Unicode d'un utilisateur. C'est à l'origine en encodage UTF-8, mais je le convertis en widechar (je peux me tromper sur le libellé). Mon débogueur (VS2008) affiche correctement les caractères japonais, allemands, etc dans la "variable quick watch". Je dois passer par un autre ensemble de données en Unicode et trouver des correspondances de la chaîne de recherche. Bien que ce ne soit pas un problème pour moi lorsque la recherche est sensible à la casse, il est plus difficile de le faire insensible à la casse. Mon approche (peut-être naïve) pour résoudre le problème serait de convertir toutes les données d'entrée et de sortie en minuscules, puis de les comparer.
une autre approche serait d'utiliser des algorithmes de comparaison qui ignorent la casse. Et le cas n'est pas votre seul problème. Sans normaliser la chaîne, les diacritiques par exemple peuvent être considérés comme faisant partie d'un ('é',' Õ'), ou plusieurs caractères individuels (''e',' ~ O'). Normalisation correcte (NFC/NFD/NFKC/NFKD) avant la comparaison est essentielle dans votre situation. – Abel
Abel, s'il vous plaît postez-le comme une réponse appropriée afin qu'il puisse être upvoted comme il se doit. C'est à peu près la seule réponse correcte dans cette situation ... –