| 
	
		|  Autor | Tema: Problema con STRTok, Char y String [C++]  (Leído 6,987 veces) |  
	| 
			| 
					
						| ZedGe 
								
								 Desconectado 
								Mensajes: 154
								
								
								
								
								
								   | 
 
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 #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;
 }
 
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ZedGe 
								
								 Desconectado 
								Mensajes: 154
								
								
								
								
								
								   | 
 
se me ocurrio dejarlo como y luego use el cambio de  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?
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| satu 
								 
								
								 Desconectado 
								Mensajes: 301
								 
								Siempre aprendiendo
								
								
								
								
								
								     | 
 
Hola El problema está aquí: ptrToken = strtok(linea, "," );datoguardado[i] = ptrToken; 
 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: char datoguardado[100][30]; // asi podras guardar hasta 100 peliculas con el nombre de hasta 30 caracteres cada una 
 Si lo haces así acuérdate de que los char* no se asignan con =, sino con strcpy/strncpy: strcpy(datoguardado[i], ptrToken); 
 Saludos |  
						| 
								|  |  
								|  |  En línea | 
 
 Breakbeat como forma de vida |  |  |  | 
			| 
					
						| ZedGe 
								
								 Desconectado 
								Mensajes: 154
								
								
								
								
								
								   | 
 
La ultima pregunta (me funciono todo perfecto), si quiero N películas como tu ejemplo, como hago para darle el numero de películas? 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? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ZedGe 
								
								 Desconectado 
								Mensajes: 154
								
								
								
								
								
								   | 
 
La ultima pregunta (me funciono todo perfecto), si quiero N películas como tu ejemplo, como hago para darle el numero de películas? 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? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| satu 
								 
								
								 Desconectado 
								Mensajes: 301
								 
								Siempre aprendiendo
								
								
								
								
								
								     | 
 
Hola
 Sí, así es como debes hacerlo. Aunque recuerda que después debes liberar la memoria con free.
 
 Saludos
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Breakbeat como forma de vida |  |  |  | 
			| 
					
						| ZedGe 
								
								 Desconectado 
								Mensajes: 154
								
								
								
								
								
								   | 
 
ok muchas gracias =D |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Char[] != String
							« 1 2 » Programación General
 | Hendrix | 19 | 12,220 |  22 Agosto 2011, 03:54 am por someRandomCode
 |  
						|   |   | strtok para la clase string [?] Programación C/C++
 | .:BlackCoder:. | 2 | 3,876 |  16 Junio 2010, 00:26 am por .:BlackCoder:.
 |  
						|   |   | Separar string con strtok Programación C/C++
 | janus_gf | 0 | 3,776 |  21 Febrero 2011, 09:19 am por janus_gf
 |  
						|   |   | comparacion de un string con char en java Java
 | sauce19 | 9 | 13,752 |  23 Agosto 2011, 17:39 pm por someRandomCode
 |  
						|   |   | [C] Error Conversión String to Char Programación C/C++
 | MeCraniDOS | 3 | 3,932 |  31 Marzo 2013, 18:31 pm por avesudra
 |    |