Il a été conçu comme une classe de chaînes (par exemple, length()
et toutes ces dizaines de fonctions de recherche), mais après l'introduction de la STL dans la bibliothèque std, il était équipé être aussi un conteneur STL (donc size()
et les itérateurs, avec <algorithm>
rendant toutes les fonctions de recherche redondantes).
Son but principal est de stocker des caractères, cependant. L'utilisation de n'importe quel POD n'est pas garantie (et ne fonctionne pas, par exemple, lors de l'utilisation de std lib de Dinkumware). En outre, le std::char_traits
nécessaire n'est pas nécessaire pour être disponible pour autre chose que char
et wchar_t
(bien que de nombreuses implémentations viennent avec une mise en œuvre raisonnable du modèle de base).
Dans la norme d'origine, la classe n'était pas obligée de stocker ses données dans un morceau de mémoire contigu, mais cela a changé avec C++ 03. En bref, il est surtout utile en tant que conteneur de caractères (a.k.a. "string"), où "character" a une définition assez large.
Le "plus sauvage" que je l'ai utilisé pour est de stocker des chaînes codées différemment en utilisant différents types de caractères. De cette manière, les chaînes de codages différents sont incompatibles même si elles utilisent la même taille de caractères (ASCII et UTF-8) et, par exemple, l'affectation provoque des erreurs de compilation.
Qu'entendez-vous par "texte"? –
pas moi, seulement char ou wchar ou TCHAR – kenny