Foros del Web » Programación para mayores de 30 ;) » C/C++ »

strings y strtok funcionan

Estas en el tema de strings y strtok funcionan en el foro de C/C++ en Foros del Web. Buenas xD Despues de muchas horas de intentos y busquedas por internet (más un poquito de terquedad) he logrado utilizar el strtok con variables tipo ...
  #1 (permalink)  
Antiguo 17/05/2010, 09:03
 
Fecha de Ingreso: abril-2009
Ubicación: Incomoda
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
strings y strtok funcionan

Buenas xD

Despues de muchas horas de intentos y busquedas por internet (más un poquito de terquedad) he logrado utilizar el strtok con variables tipo strings.

No se si a alguien más aquí le ha pasado que al utilizar el strtok le sale mensajes de error tipo "Imposible convertir char* to const char*"... buscando en varias páginas lo común que encontraba era alternativas a strtok(funciones creadas por otros usuarios), e incluso una página decía que el strtok no trabajaba con strings.

Bueno, esto es un código de ejemplo:

Código C++:
Ver original
  1. //Code::Blocks 8.02
  2. #include <cstring>
  3. #include <iostream>//char *tmp = (char*)param0.c_str();
  4.  
  5. using namespace std;
  6.  
  7. //Dividir en Tokens
  8. int main()
  9. {
  10.   string oracion= "Me van a despedazar T_T";
  11.   char *frase = (char*)oracion.c_str(); //AQUI ERA DONDE ME QUEBRABA EL COCO
  12.   char *ptr;
  13.   cout << "Frase: " << frase << endl;
  14.   ptr = strtok(frase," ");//argumentos: frase, caracter delimitador
  15.   int c = 0;
  16.   string tokens[1000];
  17.   while(ptr != NULL)
  18.     {
  19.       tokens[c] = ptr;
  20.       ptr = strtok(NULL, " ");
  21.       c++;
  22.     }
  23.   int numero;
  24.   for(int i = 0; i < 10; i++){
  25.       cout << "\nQue parte de la frase desea conocer?: ";
  26.       cin>>numero;
  27.       numero = (numero <= c && numero-1 >= 0)?numero:1;
  28.       cout << "\nLa palabra en esta posicion es \""<<tokens[numero-1]<<"\""<<endl;
  29.   }
  30.   cout << "Cantidad de palabras: "<<c;
  31.   return 0;
  32. }

Al principio por ingenuidad lo que se me ocurrio fue:
char frase = oracion;


Soy nuevo en C++ y me causa dificultad acostumbrame a algunas cosas (lo mio es PHP) y estoy completamente seguro que éste código se puede mejorar. Me encantaria ver sugerencias xD ya que en ocasiones me obsesiono por hacer códigos muy compactos o resumidos. =D
  #2 (permalink)  
Antiguo 17/05/2010, 10:08
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: strings y strtok funcionan

Si te interesa separar tokens con espacios en blanco, puedes usar un istringsteam

Código C++:
Ver original
  1. istringstream s(caracteres_leidos);
  2.    string token;
  3.  
  4.     while( s >> token )
  5.     {
  6.         cout << "Token : '" << token << "'\n";
  7.     }
  #3 (permalink)  
Antiguo 21/05/2010, 02:25
 
Fecha de Ingreso: abril-2009
Ubicación: Incomoda
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: strings y strtok funcionan

wow!, es una forma muy corta y fácil de usar, gracias xD

Etiquetas: funcionan, strings
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:50.