C ++: el contenedor de cadena
La forma más común de una matriz C ++ es la cadena de caracteres terminada en cero se utiliza para mostrar texto, que muestra claramente las ventajas y desventajas de la matriz. Considere lo fácil que aparezca el siguiente:
cout lt; lt; "Esto es una cadena" -
Pero las cosas se ponen feas rápidamente cuando intenta realizar una operación incluso tan simple como la concatenación de dos de estas cadenas terminadas en nulo:
char * concatCharString (const char * s1, const char * s2) {= longitud int strlen (s1) + strlen (s2) + 1-char * s = new char [longitud] -strcpy (s, s1) -strcat (s , s2) -Retorno s-}
El STL proporciona una cuerda recipiente para manejar cadenas de presentación. los cuerda clase proporciona una serie de operaciones (incluyendo operadores sobrecargados) para simplificar la manipulación de cadenas de caracteres. Lo mismo concat () operación se puede realizar como sigue usando cuerda objetos:
concat cadena (const string s1, const string s2) {return s1 + S2-}
En su esencia, un cuerda sigue siendo una matriz. Las operaciones previstas por el STL que sea más fácil de manipular cuerda objetos, pero no mucho más rápido. Inserción en el medio de una cuerda Todavía implica mover el contenido de matrices alrededor.
los cuerda clase es en realidad una instancia de la plantilla de clase basic_class
La definición de C ++ '11 agrega u16string y u32string, que se extiende a los métodos de manipulación de cadenas a UTF-16 y UTF-32 cadenas de caracteres. Todas las comparaciones entre dos objetos de cadena se realizan lexicográficamente - es decir, cuál de las dos cadenas aparecería por primera vez en el diccionario de la lengua actual.