Autor
|
Tema: Problema con STRTok, Char y String [C++] (Leído 6,493 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
|
10,699
|
22 Agosto 2011, 03:54 am
por someRandomCode
|
|
|
strtok para la clase string [?]
Programación C/C++
|
.:BlackCoder:.
|
2
|
3,577
|
16 Junio 2010, 00:26 am
por .:BlackCoder:.
|
|
|
Separar string con strtok
Programación C/C++
|
janus_gf
|
0
|
3,483
|
21 Febrero 2011, 09:19 am
por janus_gf
|
|
|
comparacion de un string con char en java
Java
|
sauce19
|
9
|
13,142
|
23 Agosto 2011, 17:39 pm
por someRandomCode
|
|
|
[C] Error Conversión String to Char
Programación C/C++
|
MeCraniDOS
|
3
|
3,469
|
31 Marzo 2013, 18:31 pm
por avesudra
|
|