Técnicas para convertir cadenas a arreglos de caracteres y viceversa en C++

  1. Convertir una cadena a un arreglo de caracteres en C++

En C++, se pueden emplear diversas técnicas para transformar una cadena en un arreglo de caracteres. A continuación, se describen dos métodos comunes.

1.1 Usando c_str() y strcpy()

El método c_str() de la clase std::string devuelve un puntero a una secuencia de caracteres terminada en nulo, lo que permite copiar los datos a un arreglo de caracteres mediante strcpy(). Los pasos son: obtener la representación con c_str(), declarar un arreglo de caracteres con tamaño adecuado y copiar los datos.


#include <iostream>
#include <cstring>
#include <string>

int main() {
    std::string entrada;
    std::cout << "Introduzca una cadena completa: ";
    std::getline(std::cin, entrada);

    int longitud = entrada.length();
    char vectorChar[longitud + 1];
    std::strcpy(vectorChar, entrada.c_str());

    std::cout << "Arreglo de caracteres resultante: ";
    for (int idx = 0; idx < longitud; idx++) {
        std::cout << vectorChar[idx];
    }
    std::cout << std::endl;
    return 0;
}

1.2 Usando un bucle for

Alternativamente, se puede recorrer la cadena carácter por carácter y asignar cada elemento a un arreglo de caracteres predefinido. Este enfoque evita el uso de funciones de C estándar.


#include <iostream>
#include <string>

int main() {
    std::string texto;
    std::cout << "Ingrese una cadena: ";
    std::getline(std::cin, texto);

    int tam = texto.length();
    char salida[tam + 1];

    std::cout << "Conversión mediante bucle: ";
    for (int contador = 0; contador < tam; contador++) {
        salida[contador] = texto[contador];
        std::cout << salida[contador];
    }
    std::cout << std::endl;
    return 0;
}

  1. Convertir un arreglo de caracteres a una cadena en C++

Para realizar la conversión inversa, de arreglo de caracteres a std::string, existen varias técnicas en C++. Se presentan tres métodos a continuación.

2.1 Usando el operador '+'

El operador de concatenación + permite construir una cadena iterativamente. Se inicializa una cadena vacía y se le van añadiendo los caracteres del arreglo en un bucle.


#include <iostream>
#include <string>

int main() {
    char datos[] = {'M', 'U', 'N', 'D', 'O'};
    int elementos = sizeof(datos) / sizeof(char);
    std::string resultado;

    for (int i = 0; i < elementos; i++) {
        resultado += datos[i];
    }

    std::cout << "Cadena concatenada: " << resultado << std::endl;
    return 0;
}

2.2 Usando el operador '=' sobrecargado

La sobrecarga del operador de asignación = en la clase std::string permite asignar directamente un arreglo de caracteres terminado en nulo a una cadena, simplificando el código.


#include <iostream>
#include <string>

int main() {
    char secuencia[] = {'H', 'O', 'L', 'A'};
    std::string cadena;
    cadena = secuencia;

    std::cout << "Cadena asignada: " << cadena << std::endl;
    return 0;
}

2.3 Usando el constructor de std::string

El constructor de std::string que acepta un arreglo de caracteres como parámetro permite inicializar la cadena directamente durante su declaración.


#include <iostream>
#include <string>

int main() {
    char arreglo[] = {'T', 'E', 'S', 'T'};
    std::string texto(arreglo);

    std::cout << "Texto desde constructor: " << texto << std::endl;
    return 0;
}

Etiquetas: C++ std::string arreglos de caracteres strcpy c_str

Publicado el 6-22 21:14