Título: Problema con STRTok, Char y String [C++] Publicado por: ZedGe en 24 Diciembre 2011, 20:12 pm Este codigo lee un archivo txt el cual puede tener algo asi
perro,gato,arbol,casa gato,pato,girafa,pelota .... .... el problema que uso el STRtok para guardar esas variables en un char[xxx], es decir, guardo las variables sin las comas.. asd[0] = perro; asd[1] = gato; ... .. el problema que al usar char y puntero me sale error: invalid conversion from 'char*' to 'char' La idea es tratar de uno usar string, ya que al poner mi datoguardado como string en vez de char funciona correcto de la forma que lo tengo no Código: #include <iostream> #include <fstream> #include <iomanip> #include <cstring> using namespace std; int main() { char linea[128]; char *ptrToken; int i=0; char datoguardado[200]; ifstream entrada("texto.txt"); ifstream input; input.open("texto.txt"); if (entrada.fail() ) { cout << "Error al tratar de abrir archivo \n"; cin.get(); return 1; } while(!entrada.eof()){ entrada.getline(linea, sizeof(linea)); ptrToken = strtok(linea, "," ); while ( ptrToken != NULL ) { datoguardado[i] = ptrToken; i++; ptrToken = strtok(NULL, "," ); } } entrada.close(); input.close(); return 0; } Título: Re: Problema con STRTok, Char y String [C++] Publicado por: ZedGe en 24 Diciembre 2011, 21:39 pm se me ocurrio dejarlo como
Código: string dato[200]; y luego use el cambio de Código: const char *dato1 = dato[j++].c_str(); ya que mis datos deben ser const char* por que la función que los usa usa ese tipo de dato alguna idea para no usar c_str y hacerlo altiro mientras se lee el archivo? Título: Re: Problema con STRTok, Char y String [C++] Publicado por: satu en 26 Diciembre 2011, 22:46 pm Hola
El problema está aquí: Código ya que ptrToken es de tipo char* y datoguardado[ i ] es un char. La solución más rápida sería declarar datoguardado como un array bidimensional: Código
Si lo haces así acuérdate de que los char* no se asignan con =, sino con strcpy/strncpy: Código
Saludos Título: Re: Problema con STRTok, Char y String [C++] Publicado por: ZedGe en 27 Diciembre 2011, 03:20 am La ultima pregunta (me funciono todo perfecto), si quiero N películas como tu ejemplo, como hago para darle el numero de películas?
Código: char nombre[][]; nombre=(char**)malloc(n*sizeof(char*)); //n=numero de cadenas //luego, para cada cadena: nombre[i]=(char*)malloc(n*sizeof(char)); // n= numero de caracteres en la cadena asi deberia ser? Título: Re: Problema con STRTok, Char y String [C++] Publicado por: ZedGe en 27 Diciembre 2011, 03:24 am La ultima pregunta (me funciono todo perfecto), si quiero N películas como tu ejemplo, como hago para darle el numero de películas? Código: char nombre[][]; nombre=(char)malloc(n*sizeof(char)); //n=numero de cadenas //luego, para cada cadena: nombre[i]=(char)malloc(n*sizeof(char)); // n= numero de caracteres en la cadena asi deberia ser? Título: Re: Problema con STRTok, Char y String [C++] Publicado por: satu en 27 Diciembre 2011, 10:02 am Hola
Sí, así es como debes hacerlo. Aunque recuerda que después debes liberar la memoria con free. Saludos Título: Re: Problema con STRTok, Char y String [C++] Publicado por: ZedGe en 27 Diciembre 2011, 20:08 pm ok muchas gracias =D
|