Buenas, mi duda es la siguiente como puedo separar una cadena de tipo char[] o string a un simple char??
Lo que quiero es pedir una cadena de char y después dividirlo en char para poder meterlo a un switch
Tengo esta función que me divide la cadena cada vez que hay un espacio pero me lo deja como cadena de char aunque sea solo un elemento.
Código C++:
Ver originalchar operacion[50];
cout<<"Ingresa la frase separada por espacios "<<endl;
cin.getline(operacion,50);
char *ptr;
while(ptr != NULL)
{
f.encolar(ptr);
}
Entonces si el resultado lo meto en una cola y después lo voy sacando como fueron entrando para ejecutar un switch
Código C++:
Ver originalswitch(f.desencolar())
{
case 'a':
break;
case 'j':
break;
}
me da este error
switch quantity not an integer
y entiendo que es porque esta recibiendo cadena de caracteres y no solo un char.
Y no se si exista otra forma de hacer esto
Por lo que entonces la otra forma que se me ocurre es:
Código C++:
Ver originalchar operacion[30];
cout<<"Ingresa la frase"<<endl;
cin.getline(operacion,30);
for(int i=0; i<30; i++)
{
char c=operacion[i];
switch(c)
{
case 'h':cout<<"Imprime la h"<<endl;
break;
case 'o':cout<<"Imprime la o"<<endl;
break;
case 'l':cout<<"Imprime la l"<<endl;
break;
case 'a':cout<<"Imprime la a"<<endl;
break;
case '+':cout<<"Imprime la +"<<endl;
break;
case '-':cout<<"Imprime la -"<<endl;
break;
case '*':cout<<"Imprime la *"<<endl;
break;
case '/':cout<<"Imprime la /"<<endl;
break;
case '(':cout<<"Imprime la ("<<endl;
break;
case ')':cout<<"Imprime la )"<<endl;
break;
}
}
Y este si funciona pero el problema es que en la parte donde esta el for
no quiero ponerle tamaño definido sino que sea del tamaño exacto que tiene la cadena, porque si por ejemplo yo meto solo "hola" en vez de recorrer 4 espacios recorre los 30 y en ocasiones imprime datos que no existen,
entonces aqui mi duda es
como contar los elementos dentro de un arreglo char??
Bueno de antemano muchas gracias y pues ojala me pudieran ayudar con cualquier de los dos problemas.