elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con STRTok, Char y String [C++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con STRTok, Char y String [C++]  (Leído 6,509 veces)
ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Problema con STRTok, Char y String [C++]
« 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;
}




En línea

ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Problema con STRTok, Char y String [C++]
« Respuesta #1 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?


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Problema con STRTok, Char y String [C++]
« Respuesta #2 en: 26 Diciembre 2011, 22:46 pm »

Hola

El problema está aquí:
Código
  1. ptrToken = strtok(linea, "," );
  2. datoguardado[i] = ptrToken;
  3.  
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
  1. char datoguardado[100][30]; // asi podras guardar hasta 100 peliculas con el nombre de hasta 30 caracteres cada una
  2.  

Si lo haces así acuérdate de que los char* no se asignan con =, sino con strcpy/strncpy:
Código
  1. strcpy(datoguardado[i], ptrToken);
  2.  

Saludos
En línea

Breakbeat como forma de vida
ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Problema con STRTok, Char y String [C++]
« Respuesta #3 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?
En línea

ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Problema con STRTok, Char y String [C++]
« Respuesta #4 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?
En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Problema con STRTok, Char y String [C++]
« Respuesta #5 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
En línea

Breakbeat como forma de vida
ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Problema con STRTok, Char y String [C++]
« Respuesta #6 en: 27 Diciembre 2011, 20:08 pm »

ok muchas gracias =D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Char[] != String « 1 2 »
Programación General
Hendrix 19 10,787 Último mensaje 22 Agosto 2011, 03:54 am
por someRandomCode
strtok para la clase string [?]
Programación C/C++
.:BlackCoder:. 2 3,582 Último mensaje 16 Junio 2010, 00:26 am
por .:BlackCoder:.
Separar string con strtok
Programación C/C++
janus_gf 0 3,489 Último mensaje 21 Febrero 2011, 09:19 am
por janus_gf
comparacion de un string con char en java
Java
sauce19 9 13,178 Último mensaje 23 Agosto 2011, 17:39 pm
por someRandomCode
[C] Error Conversión String to Char
Programación C/C++
MeCraniDOS 3 3,489 Último mensaje 31 Marzo 2013, 18:31 pm
por avesudra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines