Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Ogl2k en 18 de Octubre de 2002, 05:17:42 PM

Título: Problemas con C++
Publicado por: Ogl2k en 18 de Octubre de 2002, 05:17:42 PM
                                Estoy intentando hacer una funcion que pueda coger palabras separadas por comas en una cadena.

Creo una cadena para guardar la palabra que quiero coger de esta manera:

char *cadena;

y le asigno un tamaño dinamicamente con:

cadena = new char[3];

pero el problema es que cuando veo la longitud de la cadena con strlen me devuelve que el tamaño es mayor del que he reservado.

¿Alguna idea?.                                
Título: Problemas con C++
Publicado por: jpastor en 18 de Octubre de 2002, 05:24:10 PM
                                No entiendo el problema, de todas formas lo intento:

1.- Si lo que haces es strlen(cadena) y te da un numero mas grande que tres es porque en cadena no hay un caracter nulo que indique el fin.

2.- Si lo que pasa es que en cadena no cabe la palabra entera, reserva la memoria más tarde cuando ya sepas el tamaño.                                
Título: Problemas con C++
Publicado por: synchrnzr en 19 de Octubre de 2002, 12:23:02 PM
                                Me decanto por la 1 ^_^

Sync                                
Título: Problemas con C++
Publicado por: nostromo en 19 de Octubre de 2002, 04:48:40 PM
                                Yo tambien voto por la 1º,
y ademas te aconsejo que utilices la clase basic_string  que esta en C++ y esta clase a la larga te evitara problemas de gestion de espacio, como el que parece que te ocurre.

Sync, por cierto, mú bien por el trabajo que estas haciendo en estos foros :)  

Un saludo.                                
Título: Problemas con C++
Publicado por: ethernet en 19 de Octubre de 2002, 09:53:36 PM
En general STL te saca de un huevo de problemas aunque te mete en muchos otros xD
Título: Problemas con C++
Publicado por: Ogl2k en 23 de Octubre de 2002, 09:44:40 AM
                                Pues si que era pq no tenia el caracter de fin de linea :).

Ande tendre la cabeza :P

Gracias a todos por la ayuda.