2010-09-15 3 views
2

J'essaie d'insérer le caractère Unicode U+2022 (bullet ) dans mon application C++.C++ Unicode Bullet Point

Je ne peux pas comprendre comment convertir que U + 2022 à un char/string pour une utilisation dans std :: constructeur string ...

char bullet = char(0x2022); 
mPassword.SetText(std::string(mText.length(), bullet)); 

Celui-ci ne fonctionne pas. J'espère que vous pouvez aider !!

Merci
opatut

+1

double possible de [Comment puis-je intégrer des constantes de chaîne unicode dans un fichier source?] (http://stackoverflow.com/questions/442735/how-can-i-embri-unicode-string-constants-in-a-source-file) –

Répondre

4

caractères Unicode est de type wchar_t (voir § 2.13.4 de la norme C++). Vous pouvez l'utiliser comme suit:

wchar_t bullet = L'\x2022'; 

Dans la chaîne il ressemblera:

std::wstring str_w_bullet(L"some text with \x2022"); 
+0

Il convient de noter cela en fonction de vos paramètres régionaux sous Linux, std: string est techniquement t Il est conçu comme une série d'unités de code UTF-8, donc il traite correctement unicode. Cependant, je n'ai aucune idée de la façon dont vous définiriez chacun d'entre eux individuellement si vous vouliez autre chose que ASCII et que vous vouliez le mettre dans le code plutôt que de lire quelque chose qui est déjà unicode (vous deviez probablement comprendre chaque code unité était plutôt que de définir un point de code entier à la fois). Cependant, sous Windows, je pense que vous devez utiliser std :: wstring. –

+0

J'ai toujours un problème. Je ne comprends tout simplement pas le point sur ma sortie. std :: wcout renvoie des guillemets (") – opatut

+1

Le problème est dans la console .Vérifiez [this] (http://stackoverflow.com/questions/2492077/output-unicode-strings-in-windows-console-app) question si vous utilisez Windows. –

1

utilisation std::wstring qui est la même que std::string mais spécialisé sur wchar_t