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

imprimir hasta caracter especifco string dev-c++

Estas en el tema de imprimir hasta caracter especifco string dev-c++ en el foro de C/C++ en Foros del Web. hola me encuentro estudiando los string y tengo la duda de si es posible que se almacene por ejemplo '''andres felipe''' en el string "nombre" ...
  #1 (permalink)  
Antiguo 05/12/2012, 13:36
Avatar de F3N1X1012  
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta imprimir hasta caracter especifco string dev-c++

hola
me encuentro estudiando los string y tengo la duda de si es posible que se almacene por ejemplo '''andres felipe''' en el string "nombre" y luego pueda imprimir solo '''andres''' y luego '''felipe''' en cadenas diferentes, no se si me explico, lo que quiero es poder almacenar informacion en el string pero que luego pueda imprimir en cadenas diferentes la misma informacion tomando como base para dividir la informacion el caracter de espacio....
bueno
gracias de antemano y perdon por el enredo
  #2 (permalink)  
Antiguo 07/12/2012, 08:35
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años
Puntos: 28
Respuesta: imprimir hasta caracter especifco string dev-c++

Hola, si he entendido bien lo que necesitas es picar una cadena en espacios, para ello existe una funcion 'strtok', lo que funciona en arreglos de char, tendrias que probar con 'string', aqui te envio 1 ejemplo.

saludos
cronos

Código:
#include <iostream>
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="Andres Felipe";
  char * pch;

  pch = strtok (str," ");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ");
  }
  system("pause");
  return 0;
}
  #3 (permalink)  
Antiguo 13/12/2012, 14:29
Avatar de F3N1X1012  
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Respuesta: imprimir hasta caracter especifco string dev-c++

Que bueno que me entendiste.... aunque ahora paso a otro problemilla
.... quiero que en vez de dejar definido el string, este se pueda capturar e imprimir de la misma forma en la que lo hace tu ejemplo...
tengo este codigo... pero solo me imprime todo lo que este antes del espacio... lo demas es como si lo ignorara...

codigo:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{

char str[20];
cout<<"ingrese nombre\n";
cin>>str;
char * pch;

pch = strtok (str," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");

}

system("PAUSE>nul");
return 0;
}
  #4 (permalink)  
Antiguo 13/12/2012, 15:32
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 11 meses
Puntos: 9
Respuesta: imprimir hasta caracter especifco string dev-c++

el problema es al momento de leer la cadena, cin por default solo lee hasta que encuentra un espacio o salto de línea (enter).

si quieres que lea espacios en blanco lee la cadena asi : cin.getline(str, 20);
  #5 (permalink)  
Antiguo 13/12/2012, 17:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: imprimir hasta caracter especifco string dev-c++

Hola,

el tipo string no permite usar la aritmética de punteros como en el tipo char, pero sí tratarlo como una tabla de caracteres, por lo que si tienes en mismo string ambos nombres (Andrés y Felipe) podrás imprimir cualquiera de los dos cuando lo necesites sabiendo en qué posición empieza cada nombre y qué longitud tiene. De hecho, hasta podrías (si no lo necesitas), ahorrarte el espacio intermedio.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. #define TAM 4
  8.  
  9. int main()
  10. {
  11.         string a = "Hola";
  12.         char b[] = "Hola";
  13.         int i;
  14.        
  15.         for(i=0; i<TAM ;i++)
  16.         {
  17.                 /* Uso aritmética de punteros en el tipo char */
  18.                 printf("a[%d]: %c b[%d]: %c\n", i, a[i], i, *(b+i));
  19.         }
  20.         return 0;
  21. }

Este código muestra, carácter a carácter, el contenido de a y b. También obtendrías el mismo resultado con el printf siguiente

Código C++:
Ver original
  1. /* Tratar ambos tipos como tablas de caracteres */
  2. printf("a[%d]: %c b[%d]: %c\n", i, a[i], i, b[i]);

Sin embargo, si usas aritmética de punteros en el tipo string

Código C++:
Ver original
  1. /* Uso aritmética de punteros en el tipo string */
  2. printf("a[%d]: %c b[%d]: %c\n", i, *(a+i), i, b[i]);

no debería dejarte compilar y te dirá que hay un error. O al menos a mí no me deja.

Un saludo,
gonzo
  #6 (permalink)  
Antiguo 14/12/2012, 10:51
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 11 meses
Puntos: 9
Respuesta: imprimir hasta caracter especifco string dev-c++

gonzo13 solo por curiosidad que relación tiene lo escribiste con la pregunta aquí expuesta?
  #7 (permalink)  
Antiguo 14/12/2012, 11:17
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: imprimir hasta caracter especifco string dev-c++

Hola dragg04,

F3N1X1012 pedía poder extraer de una variable de tipo string dos cadenas de tipo char (también sería válido el tipo string, según yo he comentado en mi post anterior) para luego imprimirlas. O eso es lo que yo entendí, y a lo que he respondido.

Únicamente le he demostrado que lo que él pide puede hacerse de otra manera distinta a la que le propuso cronopiomx, pero que ambas son válidas. No le he dicho cómo tiene que hacerlo, sólo que puede hacerse.

Espero haberte aclarado la duda. Un saludo,
gonzo
  #8 (permalink)  
Antiguo 14/12/2012, 11:35
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 11 meses
Puntos: 9
Respuesta: imprimir hasta caracter especifco string dev-c++

no, lo que F3N1X1012 quiere es poder introducir una cadena de caracteres, después dividirla y mostrar el contenido de cada cadena. Bueno al menos eso entendí yo
  #9 (permalink)  
Antiguo 14/12/2012, 13:37
Avatar de F3N1X1012  
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: imprimir hasta caracter especifco string dev-c++

Bueno..... dragg04 tienes mucha razon en lo que dices y pues gonzo 13 la verdad me perdi un poquillo con tu explicacion pero si lo que intentaste explicar va de la mano con lo que comento dragg04 me encantaria aprender...
  #10 (permalink)  
Antiguo 14/12/2012, 14:56
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 11 meses
Puntos: 9
Respuesta: imprimir hasta caracter especifco string dev-c++

lo único que hace gonzo13 en su código es imprimir un carácter. No imprime una cadena de caracteres. Ahora F3N1X1012 para entender lo que trata de explicar gonzo13 necesitarías, almenos, las bases de manejo de puntero
  #11 (permalink)  
Antiguo 14/12/2012, 18:26
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: imprimir hasta caracter especifco string dev-c++

Hola,

dragg04, lo he imprimido carácter a carácter para demostrar que puede accederse a una variable string de esa forma. Ahora, puede copiarse la cadena deseada a otra de tipo string o char y mostrarlo como una sóla cadena con %s.

Es cierto que mi código no lo hace, pero ya advertí en mi anterior post que sólo he demostrado una propiedad del tipo string que puede servir para resolver el problema.

Un saludo,
gonzo

p.d.: juraría que nuestra descripción del problema ha sido la misma, pero con distintas palabras.

Última edición por gonzo13; 14/12/2012 a las 18:35

Etiquetas: dudas, string
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 14:58.