Separar datos de una cadena en C++

n1x3r

Pues eso, tengo una cadena char con el dato de uan fecha dado asi 22/12/2006 (DD/MM/AAAA) y tengo q separar los datos en variables integer, una para el dia, otra para el mes, y otra para el año, y poder asi operar con los datos.

Me leo y releo los arry pero no los entiendo, si podeis explicarmelo con algun ejemplo practico lo agradeceria.

BlisZ

si te refieres a algo tipo el explode() en php tb me interesa saber como se hace

cabron

No existe esa función en la libreria estándar (al menos no que yo sepa).

Tendrías que ir recorriendo una por una las posiciones del array en busca del carácter que hace de separador (/), y una vez sabes donde termina cada parte dentro del array, pues copias cada una en una variable diferente.

PD: Usa un struct de tres elementos en lugar de un string, y te dejas de historias.

elkaoD

Si no entiendes los arrays con punteros vas jodido.

Mira es simple, imagínate un array como un cajón con departamentos... uno para las chinchetas, otro para clips, otro para gomas... Ahora imagina que en cada departamento solo cabe un byte, y que los departamentos están numerados. Eso es un array.

nombredelarray[3] te dará el contenido del departamento número 2 (Sé que es raro, pero empieza por el 0, lo jodido es que al inicializar si pones 84 va del 0 al 83.)

Otro ejemplo, imagina que son variables dentro de variables, solo que las variables de dentro en vez de ser con nombre son números.

Y otra más, si has dado 2º de Bachillerato, es como una matriz fila. Recuerda que puedes hacer arrays de más de una dimensión por lo que puedes hacer no sólo matrices fila.

gF

Ya respondí en el anterior post que pusiste, SI (no hagas caso a los que dicen que no) existe una funcion que rompe una cadena pasandole tu los delimitadores en los que quieres que se divida, la función es "strtok".

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

Supongo que aunque digas en C++ te refieres a C ya que aun no habras visto la clase "String" y estarás usando cadenas de caracteres, no objetos "String", para la clase String tb hay algo parecido.

Aqui tienes una ayuda, no se si compilará pq no lo he probado, he escrito el codigo directamente.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main()
{
char s1[] = "26/11/2006";
char *ptr;
int dia, mes, año;

printf( "Fecha=%s\n", s1 );

ptr = strtok( s1, "/" );
dia = atoi(ptr);
printf( "Dia: %d\n", dia);

ptr = strtok( NULL, "/" );
mes = atoi(ptr);
printf( "Mes: %d\n", mes);

ptr = strtok( NULL, "/" );
año = atoi(ptr);
printf( "Año: %d\n", año);

}

javithelong

con las variables asi:
int dia, mes, anio;

hago tu codigo en una linea:
sscanf(cadena, "%d/%d/%d", &dia, &mes, &anio);

[ironia]
Pero si, strtok es muy bueno, eh? aunque joda la cadena
[/ironia]

SeRiaL_k

mmm copia dia,mes y año en 3 arrays de caracteres diferentes y despues en cada una de ellas aplica atoi() y lo pasa a int

Usuarios habituales

  • SeRiaL_k
  • javithelong
  • gF
  • elkaoD
  • cabron
  • BlisZ
  • n1x3r