std::wstring longueur
Quel est le résultat de std::wstring.longueur() fonction de la longueur en wchar_t(s) ou de la longueur des symboles? Et pourquoi?
TCHAR r2[3];
r2[0] = 0xD834; //D834, DD1E - musical G clef
r2[1] = 0xDD1E; //
r2[2] = 0x0000; //'/0'
std::wstring r = r2;
std::cout << "capacity: " << r.capacity() << std::endl;
std::cout << "length: " << r.length() << std::endl;
std::cout << "size: " << r.size() << std::endl;
std::cout << "max_size: " << r.max_size() << std::endl;
Output>
capacity: 351
length: 2
size: 2
max_size: 2147483646
Vous devez vous connecter pour publier un commentaire.
std::wstring::size()
retourne le nombre de caractères des éléments de la chaîne. Ce n'est pas le même que le nombre de caractères (comme vous l'avez justement remarqué).Malheureusement, la
std::basic_string
modèle (et donc de ses instanciations, commestd::string
etstd::wstring
) est l'encodage agnostique. En ce sens, il est en fait juste un modèle pour une chaîne d'octets et non pas une chaîne de caractères.Tout d'abord std::wstring est une instanciation de
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
.Bien que la plupart du vrai travail est fait par char_traits, et l'on peut écrire leur propre, cela se fait principalement à permettre l'utilisation de la bibliothèque runtime C avec différentes tailles de caractères.
La façon d'analyser un pointeur d'Élément* est jusqu'à ce que le caractère indiqué par le char_traits que terminator est atteint.
Cependant, vous pouvez construire avec un pointeur et d'une longueur, auquel cas il va lire le nombre de caractères qu'il vous dit, ce qui inclut tous les octets nuls. Vous pouvez avoir incorporé des octets nuls dans une basic_string, et si vous appelez de la longueur (la) ou la taille() qui sont des alias pour la même chose, il vous indiquera le nombre de caractères qu'il contient.
Il n'y a pas de magie dans char_traits pour le décodage multi-élément caractères comme l'un, ni si vous essayez de mettre en œuvre cette façon.
taille de méthode renvoie le nombre d'éléments dans la chaîne. C'est le même que wstring::longueur
Habituellement, les gens parlent d'un mot, d'une phrase ou d'un paragraphe de la longueur, pas sa taille
length()
etsize()
généralement retourner le nombre de "caractères" (indépendamment de la largeur) dans la chaîne de à l'exclusion de lanull
, ici la longueur & la taille est 2.capacity()
retourne la quantité de mémoire (lire: comment de nombreux personnages, comme c'est le multi-byte) est généralement disponible avant la chaîne de ré-allouer.