Foros del Web » Programación para mayores de 30 ;) » C/C++ »

cómo separar el contenido de una tupla (cadena larga)?

Estas en el tema de cómo separar el contenido de una tupla (cadena larga)? en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/05/2008, 12:16
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
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++!!!
  #2 (permalink)  
Antiguo 09/05/2008, 12:31
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: cómo separar el contenido de una tupla (cadena larga)?

Esta es una opcion:

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

Todos somos sabios, solo que en diferentes disciplinas...
  #3 (permalink)  
Antiguo 09/05/2008, 12:34
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
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...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #4 (permalink)  
Antiguo 09/05/2008, 14:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
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!
  #5 (permalink)  
Antiguo 09/05/2008, 15:29
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
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...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #6 (permalink)  
Antiguo 09/05/2008, 15:30
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
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...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:22.