Y a-t-il une différence entre ces deux formats de stockage de chaîne?Quelle est la différence entre "UTF-16" et "std :: wstring"?
Répondre
std::wstring
est un conteneur de wchar_t
. La taille de wchar_t
n'est pas spécifiée: les compilateurs Windows ont tendance à utiliser un type 16 bits, les compilateurs Unix un type 32 bits.
UTF-16 est un moyen de coder des séquences de points de code Unicode dans des séquences d'entiers de 16 bits. En utilisant Visual Studio, si vous utilisez des littéraux à caractères larges (par exemple L"Hello World"
) qui ne contiennent aucun caractère en dehors du BMP, vous finirez avec UTF-16, mais la plupart du temps les deux concepts ne sont pas liés. Si vous utilisez des caractères en dehors du BMP, std::wstring
ne traduira pas surrogate pairs en points de code Unicode pour vous, même si wchar_t
est 16 bits.
Voulez-vous dire que std :: wstring est le même que UTF-16 pour le caractère unicode non-BMP lorsqu'il est utilisé dans le système d'exploitation Windows? – hkBattousai
n ° std :: wstring est juste un conteneur d'entiers. L'encodage du conteneur dépend entièrement des données que vous insérez dans le conteneur. –
+1: Pour les personnes non familières avec l'UTF, il peut être judicieux de définir les BMP. –
UTF-16 est un concept de texte représenté dans les éléments de 16 octets, mais un caractère textuel réelle peut consister en un que l'élément
std :: wstring est juste une collection de ces éléments, et est une classe principalement concernés par leur stockage.
Les éléments d'un wstring, wchar_t, sont au moins de 16 bits mais pourraient être de 32 bits.
Pouvez-vous s'il vous plaît expliquer plus en détail, comme donnant un exemple. Par exemple, le caractère 'A' est stocké dans std :: wstring comme "0x0041". Comment est-il stocké au format UTF-16? – hkBattousai
16 - ** octet ** ?? woah c'est un encodage de caractères hardcore – Inverse
@Inverse: C'est pourquoi tout le monde devrait utiliser ASCII, il n'y aurait pas beaucoup de chagrin sur l'utilisation de la mémoire;) –
UTF-16 est un codage Unicode spécifique. std::wstring
est une implémentation de chaîne qui utilise wchar_t
comme type sous-jacent pour stocker chaque caractère. (En revanche, std::string
utilise char
).
Le codage utilisé avec wchar_t
ne doit pas nécessairement être UTF-16 - il pourrait aussi être UTF-32 par exemple.
Il pourrait également être UCS-2 ou S-JIS ou Big 5 ou ... eh bien, n'importe quoi. – greyfade
- 1. Quelle est la différence entre std :: string et std :: basic_string? Et pourquoi les deux sont nécessaires?
- 2. Quelle est la différence entre dict() et {}?
- 3. Quelle est la différence entre "$^N" et "$ +"?
- 4. Quelle est la différence entre = et: =
- 5. quelle est la différence entre:.! et: r !?
- 6. Quelle est la différence entre ~ et! opérateur?
- 7. Quelle est la différence entre cstdlib et stdlib.h?
- 8. std :: wstring length
- 9. Quelle est la différence entre la saturation et la luminosité?
- 10. Structure Init avec std :: wstring
- 11. Comment utiliser std :: wstring avec std :: istringstream?
- 12. Quelle est la différence entre ces extraits?
- 13. Quelle est la différence entre applicationDidReceiveMemoryWarning, didReceiveMemoryWarning?
- 14. Quelle est la différence entre ces importations?
- 15. Quelle est la différence entre ces commentaires
- 16. Quelle est la différence entre la sérialisation et l'encodage?
- 17. Quelle est la différence entre la version et l'itération?
- 18. Quelle est la différence entre la programmation parallèle et multicœur?
- 19. Quelle est la différence entre la plate-forme et l'outil?
- 20. Quelle est la différence entre le tuyau et la douille?
- 21. Quelle est la différence entre ces codes?
- 22. Quelle est la différence entre ces conditions?
- 23. Quelle est la différence
- 24. Quelle est la différence entre JAIN SIP et MJSIP?
- 25. Quelle est la différence entre openGL et EAGL/openAL?
- 26. Quelle est la différence entre un nanokernel et un exokernel?
- 27. Quelle est la différence entre UML 2.1.2 et UML 2.2
- 28. Quelle est la différence entre ASP.NET DynamicData et IronSpeed?
- 29. Quelle est la différence entre DTCPing et DTCTester?
- 30. Quelle est la différence entre RMI et Corba?
il ya une assez bonne réponse à cette question ici: http://stackoverflow.com/questions/402283/stdwstring-vs-stdstring/402918#402918 –