- 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;
}
- 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;
}