2010-10-07 6 views
4

Comment initialiser un const const * et/ou const std :: string en C++ avec une séquence de caractères UTF-8? J'utilise une API d'expression régulière qui accepte la chaîne UTF8 comme const char *. Le code d'initialisation doit être indépendant de la plate-forme.Comment initialiser un const const * et/ou const std :: string en C++ avec une séquence de caractères UTF-8?

+0

Les options disponibles dépendent du compilateur que vous utilisez. –

+4

Facilement. 'const char * c =" ěščř ";'. Sauvegardez simplement le fichier en encodage UTF-8. – nothrow

+0

Les options dépendent également de la lisibilité de la chaîne UTF-8 dans le code source. –

Répondre

7

Cela devrait fonctionner avec tout compilateur:

const char* twochars = "\xe6\x97\xa5\xd1\x88"; 
2

compilateur - réponse indépendante est: Enregistrez le fichier en UTF-8 sans codage signature nomenclature.

const char* c = "ěščř"; //Just save the file in UTF-8 without BOM signature. 

(Voir le commentaire de la question.)
BTW, la console Windows doit abeille mis à UTF8. Pour de nombreux détails, voir post en question.

+0

Cela devrait être la pratique recommandée de nos jours. Faites bien comprendre que tout votre code source est UTF-8 sans BOM, ne faites aucune exception, utilisez toujours UTF-8 pour tous vos fichiers, puis initialisez les chaînes constantes comme le supporte la norme C/C++. – cesss