8
votes

STD :: Durée de lawstring

Quel est le résultat de la fonction STD :: wstring.length (), la longueur dans WCHAR_T (S) ou la longueur des symboles? Et pourquoi? XXX


0 commentaires

4 Réponses :


0
votes

La méthode de taille renvoie le nombre actuel d'éléments de la chaîne. C'est la même chose que Wstring :: Longueur Les gens parlent généralement d'un mot, d'une phrase ou d'une longueur de paragraphe, pas de sa taille


1 commentaires

Taille_type String :: Capacité () Const renvoie le nombre de caractères qu'une chaîne peut contenir sans réaffectation.



14
votes

std :: wstring :: Taille () retourne le nombre d'éléments largement caractères dans la chaîne. Ce n'est pas la même chose que le nombre de caractères (comme vous l'avez remarqué correctement).

Malheureusement, le modèle std :: basique_string (et donc ses instanciations, telles que std :: string et std :: wstring ) est codé-agnostique. En ce sens, il s'agit simplement d'un modèle pour une chaîne d'octets et non une chaîne de caractères.


0 commentaires

0
votes

longueur () et taille () renvoie généralement le nombre de "caractères" (quelle que soit la largeur) dans la chaîne excluant le < Code> null , la longueur et la taille de la longueur est 2. capacité () retourne la quantité de mémoire (lecture: combien de caractères, car il est multi-octet) est généralement disponible avant la chaîne réaffectera.


0 commentaires

2
votes

Tout d'abord std :: wstring est une instanciation de std :: basic_string , std :: allocator > . .

Bien que la plupart des travaux réels soient effectués par Char_Traits, et on peut écrire leur propre, cela se fait principalement pour permettre l'utilisation de la bibliothèque d'exécution C avec différentes tailles de caractères.

Le moyen d'analyser dans un pointeur d'élément * est jusqu'à ce que le caractère indiqué par les caractères caractères soit atteint.

Cependant, vous pouvez construire avec un pointeur et une longueur, auquel cas il lira le nombre de caractères qu'il vous dit, ce qui inclura tous les nottes nuls. Vous pouvez avoir des nulltes nuls intégrées dans une base_string, et si vous appelez la longueur () ou la taille () qui sont des alias pour la même chose, il vous indiquera combien de caractères il contient.

Il n'y a pas de magie dans Char_Traits pour décoder des caractères multi-éléments comme un, ni essayer de le mettre en œuvre de cette façon.


2 commentaires

Et pourquoi cette réponse a-t-elle été marquée? J'ai donné des informations utiles sur exactement ce qu'est un wstring et comment il est construit à partir d'un pointeur.


Je pense que c'est une excellente réponse, en particulier votre explication de l'utilisation du caractère Terminator de Char_Traits.