Array de strings en C++: 5 formas diferentes de crear

En C++, una string suele ser solo una array de (o una referencia/apunta a) caracteres que terminan con el carácter NULL ‘ \0 ‘. Una string es una array unidimensional de caracteres y una array de strings es una array bidimensional de caracteres. 

A continuación se muestran las 5 formas diferentes de crear una array de strings en C++:

  • Uso de punteros
  • Uso de array 2-D
  • Usando la clase de string
  • Uso de la clase vectorial
  • Uso de la clase de array

1. Uso de punteros

Los punteros son la representación simbólica de una dirección. En palabras simples, un puntero es algo que almacena la dirección de una variable en él. En este método, una array de literales de string se crea mediante una array de punteros en los que el carácter o el puntero de string apunta al primer valor de la array creada y siempre lo señalará hasta que se atraviese.

 

Complete Interview Preparation - GFG

Ejemplo:

CPP

// C++ program to demonstrate array of strings using
// pointers character array
#include <iostream>
#include <stdio.h>
 
int main()
{
    // Initialize array of pointer
    const char* colour[4]
        = { "Blue", "Red", "Orange", "Yellow" };
 
    // Printing Strings stored in 2D array
    for (int i = 0; i < 4; i++)
        std::cout << colour[i] << "\n";
 
    return 0;
}
Producción: 

Blue
Red
Orange
Yellow

 

  • El número de strings es fijo, pero no es necesario. El 4 puede omitirse y el compilador calculará el tamaño correcto.
  • Estas strings son constantes y su contenido no se puede cambiar. Debido a que los literales de string (literalmente, las strings entre comillas) existen en un área de memoria de solo lectura, debemos especificar «const» aquí para evitar accesos no deseados que pueden bloquear el programa.

2. Usando una array 2D

Una array 2-D es la forma más simple de una array multidimensional en la que almacena los datos en forma tabular. Este método es útil cuando se conoce la longitud de todas las strings y se desea una huella de memoria particular. El espacio para strings se asignará en un solo bloque.

Ejemplo :

CPP

// C++ program to demonstrate array of strings using
// 2D character array
#include <iostream>
 
int main()
{
    // Initialize 2D array
    char colour[4][10]
        = { "Blue", "Red", "Orange", "Yellow" };
 
    // Printing Strings stored in 2D array
    for (int i = 0; i < 4; i++)
        std::cout << colour[i] << "\n";
 
    return 0;
}
Producción: 

Blue
Red
Orange
Yellow

 

  • Tanto el número de strings como el tamaño de las strings son fijos. El 4, nuevamente, puede omitirse, y el compilador calculará el tamaño apropiado. Sin embargo, se debe dar la segunda dimensión (en este caso, 10), para que el compilador pueda elegir un diseño de memoria apropiado.
  • Cada string se puede modificar, pero ocupará todo el espacio proporcionado por la segunda dimensión. Cada uno se colocará uno al lado del otro en la memoria y no puede cambiar de tamaño.
  • A veces, es deseable el control sobre la huella de memoria, y esto asignará una región de memoria con un diseño fijo y regular.

3. Usando la clase String

La string STL o la clase de string se pueden usar para crear una array de strings mutables. En este método, el tamaño de la string no es fijo, y las strings se pueden cambiar, lo que de alguna manera lo hace de naturaleza dinámica; sin embargo, std::string se puede usar para crear una array de strings usando funciones integradas. 

Ejemplo:

CPP

// C++ program to demonstrate array of strings using
// array of strings.
#include <iostream>
#include <string>
 
int main()
{
    // Initialize String Array
    std::string colour[4]
        = { "Blue", "Red", "Orange", "Yellow" };
 
    // Print Strings
    for (int i = 0; i < 4; i++)
        std::cout << colour[i] << "\n";
}
Producción: 

Blue
Red
Orange
Yellow

 

La array tiene un tamaño fijo, pero no es necesario. Nuevamente, el 4 aquí puede omitirse y el compilador determinará el tamaño apropiado de la array. Las strings también son mutables, lo que permite cambiarlas.

4. Usando la clase de vector

Un vector es una array dinámica que duplica su tamaño cada vez que se agrega un nuevo carácter que excede su límite. El vector contenedor STL se puede usar para asignar dinámicamente una array que puede variar en tamaño.

Esto solo se puede usar en C++, ya que C no tiene clases. Tenga en cuenta que la sintaxis de la lista de inicializadores aquí requiere un compilador que admita el estándar C++ de 2011 y, aunque es muy probable que su compilador lo haga, es algo que debe tener en cuenta.

CPP

// C++ program to demonstrate array of strings using vector
#include <iostream>
#include <string>
#include <vector>
 
int main()
{
    // Declaring Vector of String type
    // Values can be added here using initializer-list
    // syntax
    std::vector<std::string> colour{ "Blue", "Red",
                                     "Orange" };
 
    // Strings can be added at any time with push_back
    colour.push_back("Yellow");
 
    // Print Strings stored in Vector
    for (int i = 0; i < colour.size(); i++)
        std::cout << colour[i] << "\n";
}
Producción: 

Blue
Red
Orange
Yellow

 

  • Los vectores son arrays dinámicas y le permiten agregar y eliminar elementos en cualquier momento.
  • Cualquier tipo o clase puede usarse en vectores, pero un vector dado solo puede contener un tipo.

5. Usando la clase de array

Una array es una mezcla homogénea de datos que se almacena continuamente en el espacio de memoria. La array de contenedores STL se puede utilizar para asignar una array de tamaño fijo. Puede usarse de manera muy similar a un vector, pero el tamaño siempre es fijo.

Ejemplo:

C++

// C++ program to demonstrate array of string
// using STL array
#include <array>
#include <iostream>
#include <string>
 
int main()
{
    // Initialize array
    std::array<std::string, 4> colour{ "Blue", "Red",
                                       "Orange", "Yellow" };
 
    // Printing Strings stored in array
    for (int i = 0; i < 4; i++)
        std::cout << colour[i] << "\n";
 
    return 0;
}
Producción

Blue
Red
Orange
Yellow

Estas no son de ninguna manera las únicas formas de hacer una colección de strings. C++ ofrece varias clases de contenedores , cada una de las cuales tiene varias compensaciones y características, y todas ellas existen para cumplir con los requisitos que tendrá en sus proyectos. ¡Explora y diviértete!

Conclusión: de todos los métodos, Vector parece ser la mejor forma de crear una array de strings en C++.

Este artículo es una contribución de Kartik Ahuja . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *