Subdividir un String por un caracter separador en un array

Iniciado por sebapoli00, 25 Marzo 2019, 22:54 PM

0 Miembros y 1 Visitante están viendo este tema.

sebapoli00

Le he estado dando vueltas a este ejercicio y no logro hacerlo funcionar

Recibo un String y un caracter que lo separa y devuelvo un array con el String separado, si no hay nada retorna NULL. Creo que puede ayudar la funcion strtok pero no logro usarlo con claridad.

Ejemplo
Entrada: "foro/el/hacker"
Salida: ['foro', 'el', 'hacker']

Ejemplo
Entrada: "/hola/mundo"
Salida: ['hola', 'mundo']

Ejemplo
Entrada: "12/345/"
Salida: ['12', '345']

Ejemplo
Entrada: "::"
Salida: NULL

la firma del método es:

char** separar(char* aSeparar, char separador){


}

desde ya muchas gracias


K-YreX

Pon el código que tengas para ver tus avances. Entonces podremos ayudarte, si te hacemos nosotros el trabajo no sirve de nada... :-X
PD: Tampoco sé si estás con C o con C++...
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

MAFUS


sebapoli00

#3
Cita de: YreX-DwX en 26 Marzo 2019, 11:44 AM
Pon el código que tengas para ver tus avances. Entonces podremos ayudarte, si te hacemos nosotros el trabajo no sirve de nada... :-X
PD: Tampoco sé si estás con C o con C++...

Mi intencion no era esa, perdon. aclaro que es c++

tengo el siguiente codigo intentandolo pero no funciona

char** separarString (char* str, char separador, int &largoRet) {
   int contador = 0;
   char** matriz = new char *[1];
   char separador1[] = { separador };
   char * pasada1;   
   while ((pasada1 = strtok(str, separador1 )) != NULL){
      contador++;
   }
   largoRet = contador;
   if (contador > 0) {
      matriz[1] = new char[contador];
                char * pasada2;   
                for(int i = 0; i<largoRet ; i++){
         pasada2 = strtok(str, separador1);
              matriz[0] = pasada2;
         }
      }
   }
   return matriz;
}

K-YreX

Coloca el código entre etiquetas de código GeSHi (hay un desplegable encima del cuadro de texto)...

El problema es que la función <strtok()> no se usa así. La primera vez se pasa la cadena original, y el resto de veces del bucle se pasa NULL como primer parámetro. Puedes mirar más información en otras fuentes. Suerte  :-X
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;