Que yo sepa hay una funcion especifica que te devuelve el numero de segundos (o milisegundos) que han transcurrido desde una fecha en concreto (ahora no recuerdo cual) hasta el momento actual.
En Visual C++ yo lo hago asi:
CTime time = CTime::GetCurrentTime ();
CString szLastTime = time.Format ( "%A, %d.%B.%Y, %H:%M:%S" );
y con esto consigo algo tipo (poniendo este momento):
Tuesday, 25.July.2006, 10:13:12 //El instante justo en que he puesto la linea
En c++ a secas no se si servira, pero te lo puedes hacer tu. Y de hecho ya lo conteste en otro mensaje, lo unico que tendrias que hacer es ir haciendo divisiones para adecuarte las cosas. Es decir (suponiendo que el retorno de la funcion "GetTime ()?????" son los segundos desde por ej el 1 de enero del 2000 <no es esa fecha pero no recuerdo cual es>)
//1 anyo = 60*60*24*365 = 31536000
//1 dia = 60*60*24... y asi
double tiempo_pasado, temp1, temp2, temp3... (los que necesites)
int anyo, mes, dia, hora, minuto, segundo;
anyo = tiempo_pasado / 31536000; //ya tienes los anyos
temp1 = tiempo_pasado % 31536000; //te quedas con lo que sobra
dia = temp1 / 86400;
temp2 = temp1 % 86400;
etc.
luego con el numero de dias te sacas en que mes estas y se lo restas, hacerlo directamente es algo jodido porque cada mes tiene dias variables, asi que tendras que hacer unos cuantos ifs anidados
if (dia <= 31)
mes = 1;
else if ((dia > 31) && (dia <= (31+28))
mes = 2;
...
etc
y al final, restas el numero de dias de los meses completos que hayas dejado detras de ti, para saber en que dia concreto del mes estas.