Question

Si un fichier contient un & # 163; (dièse) signe alors directory_iterator renvoie correctement la séquence de caractères utf8 \ xC2 \ xA3

wdirectory_iterator utilise des caractères larges, mais renvoie toujours la séquence utf8. Est-ce le comportement correct pour wdirectory_iterator, ou est-ce que je ne l'utilise pas correctement?

AddFile(testpath, "pound£sign"); 
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
Était-ce utile?

La solution

Le codage des caractères larges (objets wchar_t ) dépend de la mise en œuvre. Pour que la deuxième déclaration (par exemple, L "pound & # 163; sign") fonctionne, vous devrez probablement modifier les paramètres régionaux sous-jacents. La valeur par défaut est " C " qui ne sait pas sur le personnage de la fourrière. La valeur hexadécimale réussit car cela ne nécessite pas de mapper le glyphe à une valeur dans un codage particulier.

Remarque: par souci de brièveté, je saute la formulation exacte du jeu standard w.r.t wchar_t, des jeux de caractères étendus, etc.

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top