Entrada destacada

Como usar enums en Android, kotlin

Cómo convertir datos String a char en C++

Introducción

Veamos como convertir una cadena de caracteres (Un objeto string) a un arreglo de caracteres (datos char). Solo utilizando recorridos con bucles y la librería string.h de C++.

En el código de ejemplo que se muestra en la parte final, se utilizo un arreglo de Cadenas, de la cual cada palabra se convierte en un arreglo de tipo char. Esto solo para dar más ejemplos de como movernos en un arreglo.

Cadenas de caracteres.

¿Qué es una cadena de caracteres?, bueno no es otra cosa más que un arreglo de varios datos tipo char, o lo mismo que decir un conjunto de n caracteres almacenadas en un arreglo. Pero en C++, existe la manera de declarar un tipo de variable que pueda almacenar toda este arreglo de manera más sencilla sin necesidad de crear un arreglo de caracteres como suele usarse en C.

Conversión

Bueno tal vez no debería decirse conversión, pero lo que se entiende es que se pasa cada uno de los caracteres de una cadena o de una variable declarada como string a un índice del arreglo declarado como char.

Entonces el proceso es tan sencillo como acceder a la posición de cada caracter y pasarlo a una posición del arreglo de caracteres.

Suponiendo la siguiente cadena: "hola" tendríamos como posiciones {0, 1, 2, 3}, ya que en un arreglo los índices se cuentan a partir del 0, sabiendo que el número de caracteres es 4, el arreglo char sería el siguiente.

    [0] = 'h'
    [1] =  'o'
    [2] = 'l'
    [3] = 'a'
Para obtener el tamaño de un string usamos length().
Y también puede utilizase sizeof ArregloPalabras / sizeof *ArregloPalabras en vez de poner directo el 4 en el for, si se aumentan las palabras en el arreglo.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string.h>

using namespace std;

/**
* Función StringToCharArray(string Cadena = false, int Tamaño = 0 )
*
* Pasa una cadena a un arreglo de cararacteres
*/
char * StringToCharArray(string Cadena, int Tamano){
    if(!(Cadena.empty()) && Tamano != 0){
        char * ArrayChar = new char[Tamano];
        //Obtenemos los caracteres uno a uno y posicionamos en el Arreglo.
        for(int i = 0; i < Tamano; i++){
            ArrayChar[i] = Cadena[i];
        }
        return ArrayChar;
    }
}

int main() {
    //Declaración de variables
    string ArregloPalabras[] = {"Hola", "Mundo", "en", "C++"};
    string Palabra = "";
    int Tamano = 0;
    char * ArregloCaracteres;

    //Pasamos las cadenas una a una
    for(int i = 0; i < 4; i++){
        Palabra = ArregloPalabras[i];
        Tamano = Palabra.length();
        ArregloCaracteres = StringToCharArray(Palabra, Tamano);
        //imprisión de cada uno de los caracteres del arreglo
        for(int j = 0; j < Tamano; j++){
            cout<< ArregloCaracteres[j] << " ";
        }
        cout<<"\n";
    }
    //Impresion de un solo caracter
    cout <<endl << ArregloCaracteres[0];
    return 0;
}

Ejecución:


Comentarios

Publicar un comentario