Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   cómo separar el contenido de una tupla (cadena larga)? (http://www.forosdelweb.com/f96/como-separar-contenido-tupla-cadena-larga-584729/)

red_robe 09/05/2008 12:16

cómo separar el contenido de una tupla (cadena larga)?
 
hola, he creado una tupla (cadena) dinámicamente, y tengo la información bien entrada.

lo que quiero es que al hacer un cout me muestre el contenido de cada nombre por separado, no todo seguido. quiero que en cada linea me muestre cada nombre.
para diferenciar cada nombre, al final del último carácter de cada uno de ellos, he puesto un '\0', el contenido del char *nombres sería algo así:

pedro\0ana\0jorge\0adan\0alfredo\0deuterio\0pepe\0 iris....

si hago: cout<<nombres<<endl; --> me salen todos los nombres uno detrás de otro: pedro ana jorge adan alfredo deuterio pepe iris
en vez de:
pedro
ana
jorge
adan
...

cómo lo hago? cómo limitar la salida de los nombres[de tal valor a tal otro..]?

sé que es más fácil en arrays o matrices, pero no barajo estas opciones!

por cierto, c++!!!

Mephisto 09/05/2008 12:31

Re: cómo separar el contenido de una tupla (cadena larga)?
 
Esta es una opcion:

http://www.conclase.net/c/librerias/...php?fun=strtok

Mephisto 09/05/2008 12:34

Re: cómo separar el contenido de una tupla (cadena larga)?
 
Por otro lado, te recomiendo que no coloques nulos intermedios, coloca otro separador para que no tengas broncas en la lectura de la cadena ya que '\0' se emplea para identificar el fin de la cadena...

red_robe 09/05/2008 14:28

Re: cómo separar el contenido de una tupla (cadena larga)?
 
gracias Mephisto!
la solución que planteas es buena pero...no me interesa que se parta la cadena original, la tengo que mantener unida hasta el final!!! quizás sea mejor pasarme al array de nombres?

hay alguna otra solución?
GR AC IA S!

Mephisto 09/05/2008 15:29

Re: cómo separar el contenido de una tupla (cadena larga)?
 
De hecho con strtok no destruyes tu cadena original, como puedes observar en la liga que te pase, declaras otro apuntador en el que irás guardando cada una de las partes de tu cadena original.

Otra opcion que pudiera ofrecerte es que hagas un for recorriendo cada caracter de tu cadena y cada que encuentres tu separador imprimes el valor que exista...

Código:

for(i=0;*(cadena+i)!='\0';i++){

  if(*(cadena+i)=='|'){

  }

}

Aunque nuevamente como te mencionaba, yo no aconsejaria que tu separador sea un nulo, ya que tendrás problemas con la lectura de tu apuntador... y requieres un buffer intermedio que te permita ir extrayendo cada uno de los componentes de la cadena original...

Espero te ayude esto...

Mephisto 09/05/2008 15:30

Re: cómo separar el contenido de una tupla (cadena larga)?
 
Lo de pasarte a un array, depende de la naturaleza del prog que estas haciendo y de donde obtienes la cadena con los nombres concatenados...


La zona horaria es GMT -6. Ahora son las 06:12.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.