9
votes

Commande dépendant des paramètres régionaux pour STD :: String

J'essaie de comparer std :: string s de manière dépendante locale.

pour les chaînes de style C ordinaires, j'ai trouvé strcoll , ce que je veux exactement ce que je veux, après avoir fait std :: setlocale xxx

Cependant, j'aimerais avoir ce comportement pour std :: String aussi. Je ne pouvais que surcharger opérateur << / code> pour faire quelque chose comme xxx

mais je devrais alors vous inquiéter du code utilisant std :: moins et std :: string :: comparer , donc il ne se sent pas bien.

est là un moyen de faire ce genre de travail de collation pour les cordes dans une manière transparente?


0 commentaires

4 Réponses :


8
votes

opérateur () de std :: locale est exactement ce que vous cherchez. Pour obtenir la locale mondiale actuelle, utilisez simplement le constructeur par défaut.


1 commentaires

C'est pratique. Il fait fonctionner les collections standard sans effort.



6
votes

La bibliothèque C ++ fournit le Collate Facet pour faire des paramètres régionaux Collation spécifique.


1 commentaires

Opérateur () sur les paramètres régionaux est le moyen le plus simple que je connaisse pour y accéder.



-1
votes

en C ++, vous devez utiliser la facette Standard Collate . Vérifiez-le


0 commentaires

0
votes

Après un peu de recherche autour, j'ai réalisé qu'un moyen de le faire pourrait être de surcharger le modèle std :: basique_string pour créer une nouvelle classe de chaîne localisée.

Il y a probablement un Gazillion bugs dans ce cas, mais comme une preuve de concept: xxx

HOperver, il ne semble pas fonctionner si vous le basez sur Char de wchar_t et je ne sais pas pourquoi ...


2 commentaires

La raison que le caractère ne fonctionne pas est que cela n'utilise pas Unicode (comme dans ".utf-8". Vous utilisez probablement ISO / IEC 8859-1.


Qu'est-ce que & A + 1 est censé faire?