Y a-t-il une différence entre ces deux formats de stockage de chaînes? p>
3 Réponses :
utf-16 est un concept de texte représenté dans des éléments de 16 bits, mais un caractère textuel réel peut consister en plusieurs éléments p>
std :: wstring n'est qu'une collection de ces éléments et est une classe principalement concernée par leur stockage. P>
Les éléments d'un wstring, wchar_t est d'au moins 16 bits mais pourraient être 32 bits. P>
Pouvez-vous s'il vous plaît expliquer plus en détail, comme donner un exemple. Par exemple, le personnage 'A' est stocké dans STD :: wstring comme "0x0041". Comment est-il stocké au format UTF-16?
16- octet b> ?? Woah c'est un personnage hardcore codant
@ Inverse: C'est pourquoi tout le monde devrait simplement utiliser ASCII, il n'y aurait pas tant de chagrin sur la mémoire;)
Pour ceux qui peuvent ne pas comprendre l'humour dans les commentaires ci-dessus, UF-16 est un 16- bit i> b> codage unicode. En outre, dans UTF-16, un caractère défini en utilisant plusieurs éléments de 16 bits est effectué ainsi via paires de substitution .
UTF-16 est un codage spécifique Unicode. Le codage utilisé avec std :: wstring code> est une implémentation de chaîne utilisant
wchar_t code> comme type sous-jacent pour stocker chaque caractère. (En revanche, régulier
std :: string code> utilise
char code>). P>
wchar_t code> A> ne doit pas nécessairement être utf-16-il pourrait également être utf-32 par exemple. P>
Cela pourrait aussi être UCS-2 ou S-JIS ou BIG 5 ou ... Eh bien, n'importe quoi.
utf-16 est un moyen de coder de séquences de points de code Unicode dans des séquences de Entiers de 16 bits. P>
Utilisation de Visual Studio, si vous utilisez des littéraux de caractères larges (par exemple, std :: wstring code> est un conteneur de
wchar_t code>. La taille de
wchar_t code> n'est pas spécifié-windows compilateurs a tendance à utiliser un type de 16 bits, un système Unix un type 32 bits. P>
L "Hello World" code>) qui ne contient aucun caractère en dehors du BMP , vous vous retrouverez avec UTF-16, mais surtout les deux concepts ne sont pas liés. Si vous utilisez des caractères en dehors du BMP,
std :: wstring code> ne traduira pas paires de substitution dans des points de code Unicode pour vous, même si
wchar_t code> est de 16 bits. P>
Voulez-vous dire que STD :: wstring est identique à UTF-16 pour seul le caractère non-BMP Unicode lorsqu'il est utilisé dans le système d'exploitation Windows?
N ° STD :: wstring n'est qu'un conteneur d'entiers. Le codage du conteneur dépend entièrement des données que vous insérez dans le conteneur.
+1: Pour les personnes inconnues avec UTF, il peut être sage de définir BMP.
Votre dernier paragraphe est la réponse à ma question. Merci.
Il y a une assez bonne réponse à cette question ici: Stackoverflow.com/Questions / 402283 / STDWSTRING-VS-STDSRING / ...