Bonjour,
Malgré les bribes d'informations que je lis ci et là, j'ai du mal a cerner la différence exacte entre le sdt::wstring et le Glib::ustring.
lorsque je codeTout les deux me répondent le code hexa unicode du 'é': e9.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::wstring ch1 = L"aeé"; Glib::ustring ch2 = "aeé"; std::cout << std::hex << ch1[2] << std::endl; std::cout << ch2[2] << std::endl;
Pourtant je croyais que ustring était spécialiste de l'utf-8 (chez moi tout est utf-8: système, éditeur et console) donc je m'attendais plutôt, mais je suis peut-être à côté de la plaque, qu'il me réponde c3a9.
D'autre part, j'ai cru comprendre que le wstring ne gérait que des caractères à taille fixe, qu'il lisait un caractère tout les 1, 2, 3 ou 4 octets à chaque fois, mais pas un mélange. Or mon éditeur étant utf-8, dans "aeé" je vois 1 octet, 1 octet et 4 octets (je suis sous linux, je compile avec gcc 4.2.2). Pourtant wstring n'a pas l'air déstabilisé lorsque je lui demande de sortir le 3ime caractère de la chaîne.
En attendant je suis embêté par ce que la seule façon de voire s'afficher un 'é' sur ma console de sortie semble de lui envoyer c3a9. Je pensais que Glib::ustring en était capable, mais visiblement non.
Mêmese termine par un échec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::cout << ch2 << std::endl
Pour l'instant je vois seulement std::string capable de m'envoyer ces octets tel quel et de m'afficher un 'é' correcte, seulement avec un string je ne peut pas extraire des caractères individuellement.terminate called after throwing an instance of 'Glib::ConvertError'
Abandon
Comme vous le voyez, mon esprit est très embrouillé sur ces notions, et malheureusement, sur ce point précis, internet ne regorge pas d'informations détaillés et accessibles.
Alors j'ai espoir que quelqu'un par ici se donnera la peine d'éclaircir mes idées.
D'avance merci.![]()
Partager