La clase de cuerda se introdujo brevemente en un capítulo anterior. Es una clase muy poderosa para manipular y manipular cuerdas. Sin embargo, dado que las cadenas son en realidad secuencias de caracteres, también podemos representarlas como simples tablas de elementos de caracteres.

    Por ejemplo, la siguiente tabla:

    char foo[11];
    

    es una tabla que puede almacenar hasta 11 elementos del tanque. Se puede representar como:

    foo

    Por lo tanto, esta tabla tiene la capacidad de almacenar secuencias de hasta 11 caracteres. Pero esta capacidad no tiene por qué estar completamente agotada: la mesa también puede acomodar secuencias más cortas. Por ejemplo, en algún momento del programa, la secuencia «Hello» o la secuencia «My Friends» pueden almacenarse en foo, ya que ambas pueden encajar en una secuencia con una capacidad de 11 caracteres.

    foo

    Por convención, el final de las cadenas representadas en las secuencias de caracteres se indica con un carácter especial: el carácter nulo, cuyo valor literal puede escribirse como’\ 0′ (barra invertida, cero.

    En este caso, la tabla de 11 elementos del tipo char llamado foo puede representarse almacenando las secuencias de caracteres «Hello» y «My friends» en el formulario:

    Tenga en cuenta que después del contenido de la propia cadena, se ha añadido un carácter nulo (‘\ 0’) para indicar el final de la secuencia. Los paneles grises representan elementos de carácter con valores indeterminados.

    Inicialización de un string

    Las matrices de caracteres son matrices ordinarias, por lo que siguen las mismas reglas. Por ejemplo, para inicializar una matriz de caracteres con una secuencia de caracteres predeterminada, podemos hacerlo como cualquier otra matriz:

    char myword [] = {'B','o','o','n','j','o','u','r','\ 0' };
    

    La declaración anterior declara una tabla de 6 elementos de caracteres inicializados con los caracteres que forman la palabra «Hello» más un carácter nulo «\ 0» al final.

    Pero los arreglos de elementos de caracteres tienen otra forma de ser inicializados: usar literales de cadena directamente.

    En las expresiones utilizadas en algunos ejemplos de los capítulos anteriores, los literales de las cadenas ya se han mostrado varias veces. Éstas se especifican poniendo el texto entre comillas dobles («. Por ejemplo:

    "El resultado es:"
    

    Es un literal de cadena, probablemente usado en un ejemplo anterior.

    Las secuencias de caracteres entre comillas («) son constantes literales. Y su tipo es, de hecho, un conjunto de caracteres terminados por un carácter nulo. Esto significa que los literales de cadena siempre tienen un carácter nulo (‘\ 0’) añadido automáticamente al final.

    Por lo tanto, la matriz de caracteres de los elementos llamados myword se puede inicializar con una secuencia de caracteres que terminan en un carácter nulo mediante cualquiera de estas dos instrucciones:

    char myword [] = {'B','o','n','j','o','u','r','0' };char myword [] ='Hola';
    

    En ambos casos, la matriz de caracteres myword se declara con un tamaño de 6 elementos tipo char: los 5 caracteres que componen la palabra «Hello», más un carácter final nulo (‘\ 0’), que especifica el final de la secuencia de caracteres y que, en el segundo caso, se añade automáticamente el uso de comillas dobles («.

    Tenga en cuenta que estamos hablando de inicializar una matriz de caracteres cuando se declara, no de asignarle valores más tarde (una vez que ya se ha declarado. De hecho, dado que los literales de cadena son matrices normales, tienen las mismas restricciones y no pueden recibir valores.

    Expresiones (una vez que mi palabra ya ha sido declarada como arriba), tales como:

    myword = "Bye";myword [] = "Bye";

    no sería válido, como tampoco lo sería:

    myword = {'B','y','e','0'};
    

    De hecho, las tablas no pueden recibir valores.

    Tenga en cuenta, sin embargo, que a cada uno de sus elementos se le puede asignar un valor individualmente. Por ejemplo, esto sería correcto:

    myword[0] ='B';myword[1] ='y';myword[2] ='e';myword[3] ='\ 0';
    

    Cadenas de caracteres y secuencias de caracteres con terminal cero

    Las tablas simples con secuencias de caracteres terminadas en cero son los tipos típicos utilizados en el lenguaje C para representar cadenas (por lo que también se denominan cadenas C. En C++, incluso si la biblioteca estándar define un tipo específico para cadenas (cadena de clases), las matrices simples con secuencias de caracteres con terminación cero (cadenas C) son una forma natural de representar cadenas en el lenguaje; de hecho, los literales de cadenas siempre producen secuencias de caracteres terminadas con un carácter nulo, no con objetos de cadena.

    En la biblioteca estándar, las dos representaciones de cadenas (cadenas en C y cadenas de biblioteca) coexisten y la mayoría de las funciones que requieren cadenas están sobrecargadas para soportarlas.

    Por ejemplo, el cin y el cout soportan directamente secuencias de extremo cero, lo que permite que se extraigan directamente del cin o se inserten en el cout, al igual que las cadenas. Por ejemplo:

    // cadenas y NTCS:#include <iostream>#include <string>usando namespace std;int main (){ char question1 [] = "¿Cuál es tu nombre?"; cadena question2 = "¿Dónde vives?"Tanque de respuesta1[80]; cadena de respuesta2; cadena de respuesta2; cadena de respuesta1; cadena de respuesta1; cadena de respuesta1; cadena de respuesta2; cadena de respuesta2; cadena de respuesta2; cadena de respuesta2; cadena de respuesta2; cadena de respuesta2; cadena de respuesta2; cadena de respuesta1; cadena de respuesta1; cadena de respuesta1; cadena de respuesta2; cadena de respuesta2; cadena de respuesta2! \ n"; return 0;}
    ¿Cómo te llamas? Homer¿Dónde vives? GreciaHola, Homero de Grecia!
    

    En este ejemplo, se utilizan tanto tablas de caracteres que utilizan secuencias como cadenas de terminales cero. Su uso es bastante intercambiable con cin y cost, pero sus declaraciones tienen una diferencia notable: las tablas tienen un tamaño fijo que debe especificarse implícita o explícitamente al hacer la declaración; la pregunta 1 tiene exactamente un tamaño de 20 caracteres (incluyendo caracteres nulos al final) y la respuesta 1 tiene un tamaño de 80 caracteres; mientras que las cadenas son simplemente cadenas, no se especifica ningún tamaño. Esto se debe a que las cadenas tienen un tamaño dinámico determinado en tiempo de ejecución, mientras que el tamaño de los arrays se determina en tiempo de compilación, antes de que el programa se ejecute.

    En

    todos los casos, las secuencias de caracteres y las cadenas terminadas por un carácter nulo se transforman fácilmente entre sí:

    Las secuencias de caracteres con terminación cero pueden transformarse implícitamente en cadenas, y las cadenas pueden transformarse en secuencias de caracteres con terminación nula utilizando una de las funciones miembro de la c_str o cadena de datos:

    char myntcs [] = "text";string mystring = myntcs; // convierte una cadena en una cadena <<<< misterio; // impreso como cadena de biblioteca << mystring.c_str (); // impreso en cadena c
    

    (nota: los datos de c_str y string son equivalentes)

    Otros consejos interesantes:

    1. Punteros en C++ En los capítulos anteriores, las variables se han explicado como ubicaciones en la memoria del ordenador a las que se puede acceder mediante su identificador (nombre. De esta manera, el programa no necesita….
    2. Cómo crear un eje de tiempo de una tabla pivotante en Excel 2013 Si está cansado de manipular las fechas en su tabla pivotante utilizando herramientas de filtrado torpes, Microsoft finalmente ha proporcionado una mejor manera…
    3. C++ Ejercicios con soluciones Ejercicios corregidos en el lenguaje C++, descargue también la lista completa de ejercicios (lenguaje C, C++, tablas, punteros,…. Vea a continuación una serie de ejercicios para descargar. Ejercicios 1: Escribir un programa en C….
    4. El lenguaje C++ Estos tutoriales explican el lenguaje C++, desde lo básico hasta las últimas características introducidas por C++ 11. Los capítulos tienen una orientación práctica, con ejemplos de programas en todas las secciones para empezar….
    5. El compilador en C++ Las herramientas esenciales necesarias para seguir estos tutoriales son un ordenador y una cadena de compilación para compilar el código C++ y construir los programas para ejecutarse. C ++ es un idioma……