Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: methisblue en 5 Abril 2018, 23:52 pm



Título: Problema al delimitar con la función strtok
Publicado por: methisblue en 5 Abril 2018, 23:52 pm
Hola , tengo una duda al delimitar con la función strtok y es que ¿cómo puedo delimitar una frase por las comillas (")?. Es decir, a mi me dan una frase como esta: " Pepe" come frutas , donde me piden que parta esa frase y guarde Pepe en un string sin las comillas, por lo que lo que he hecho ha sido partir "Pepe" en tres con esa función y coger el cacho de en medio que lleva la palabra que busco pero claro , el compilador se me queja cuando pongo esto:  ptr=strtok(const_cast<char*>(name.c_str()) , " " " );  Entonces, alguno sabe alguna forma de poder coger ese nombre ya bien sea del modo que yo he dicho o con otro diferente? Un saludo y gracias de antemano. 


Título: Re: Problema al delimitar con la función strtok
Publicado por: Kenji-chan en 6 Abril 2018, 01:07 am
pon tu codigo.
pero creo que uno de los errores es que estas poniendo mal el limitador en c/c++ no puedes hacer esto """ para introducir una comillas dentro de comillas haces esto "\""


Título: Re: Problema al delimitar con la función strtok
Publicado por: methisblue en 6 Abril 2018, 13:45 pm
Sii, era eso lo que me pasaba, pero lo he arreglado y ahora si que funciona peor donde deberia guardarse el nombre se guarda un espacio en blanco, adjunto código:
(El código está hecho basándome en quitar las comillas a un nombre pej : "PEPE")


            ptr=strtok(const_cast<char*>(name.c_str()) , " \" " );
            cont=0;
            string nombre[2];
            while((ptr=strtok(NULL , " \" " )) !=NULL){ //Quitar comillas del nombre
                nombre[cont]=ptr;
                cont++;
            }
            name= nombre[1];


Título: Re: Problema al delimitar con la función strtok
Publicado por: Kenji-chan en 6 Abril 2018, 14:08 pm
primero el código se pone entre etiquetas  GeSHi
segundo en la condición del while no pones la función  strtok

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[]) {
  7. string txt = "\"pepe\" como frutas";
  8. const char delim[2] = "\"";
  9. char* token;
  10.  
  11. token = strtok((char*)txt.c_str(), delim);
  12.  
  13. while(token != NULL){
  14. fprintf(stdout, "%s\n", token);
  15. token = strtok(NULL, delim);
  16. }
  17.  
  18. return 0;
  19. }
  20.  

este código me da como salida
pepe
 como frutas

ya que la funcion strtok devuelve un puntero al primer token encontrado en la cadena y devuelve un puntero nulo si no quedan tokens para recuperar


Título: Re: Problema al delimitar con la función strtok
Publicado por: methisblue en 6 Abril 2018, 16:05 pm
Vale, ya esta solucionado. Muchisimas gracias en serio  :D