Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/09/2010, 11:20
damo503
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: ayuda para obtener el valor de un char array

hola r0d jajajajaja muchas gracias por su ayuda comentarle que por lo menos de momento no he necesitado usar boost para resolver el problema igual he sido un poco "bestia" con la solución pero... funciona... habrá que ver los errores que pueda producir pero bueno ya es un paso por lo menos para mi aquí describo como he llegado a la solución del problema gracías a sus indicaciones, a propósito llamé al resultado final rod jajajajajaja espero que no tenga copyright

como bien indicaba en su post en el FAQ declaré lo siguiente
Código:
 char array2[256]; //array donde divido la linea, recibe buscar  
    string srtnumeros; //string para istringtream recibe array2[?]
    std::istringstream obtenerhora1(srtnumeros ),obtenerhora2(srtnumeros ), obtenerminuto1(srtnumeros),obtenerminuto2(srtnumeros); //para convertir a valores integer
   std::istringstream obtenersgundo1(srtnumeros ),obtenersegundo2(srtnumeros ); //para convertir a valores integer
   int rod=0; // resultado final en segundos
const char *buscar; //buscar caracter ":" en la cadena y donde recibo las lineas del archivo
un string llamado srtnumeros que recibira el caracter que quiero convertir
he tenido que declarar todas "istringstream" que he necesitado puesto que sino no me dejaba "reutilizarla" al menos de la forma en la que lo he echo , pienso probarla en una función más adelante
y un int llamado rod que recibe el resultado final en segundos

divimos el "buscar" osea la linea recibida en partes, para ello primero obtengo la longitud de buscar
Código:
len = strlen (buscar); //tamaño de la cadena
               i=0;
              for (i=0;i<len;i++)
             array2[i] = buscar[i]; //dividimos la cadena una por una
y ahora viene lo bonito y lo que he considerado como muuuy "bestia" jajajaja como se las posiciones de los datos que quiero capturar he echo lo siguiente por porbar si funcionaba jajajaja
Código:
 if (strchr(array2,':')!=NULL) //buscamos el caracter ":" en la cadena  
            {    
           srtnumeros=array2[0]; //hora1
           istringstream obtenerhora1(srtnumeros );
           obtenerhora1 >> hora1; 
           srtnumeros.clear ();  //limpamos srtmuneros
           srtnumeros=array2[1]; //hora2
           istringstream obtenerhora2(srtnumeros );
           obtenerhora2 >> hora2; 
           srtnumeros.clear ();
           srtnumeros=array2[3]; //minuto1
           istringstream obtenerminuto1(srtnumeros );
           obtenerminuto1 >> minuto1;
           srtnumeros.clear ();
            srtnumeros=array2[4]; //minuto2
           istringstream obtenerminuto2(srtnumeros );
           obtenerminuto2 >> minuto2;
           srtnumeros.clear ();
            srtnumeros=array2[6]; //segundo1
           istringstream obtenersegundo1(srtnumeros );
           obtenersegundo1 >> segundo1;
           srtnumeros.clear ();
           srtnumeros=array2[7]; //segundo2
           istringstream obtenersegundo2(srtnumeros );
           obtenersegundo2 >> segundo2;
           srtnumeros.clear ();
           horas=((hora1*10)+hora2))*1200;
            minutos=((minuto1*10)+minuto2))*60;
            segundos=(segundo1*10)+segundo2;
            rod=horas+minutos+segundos;
seeeeppp jajajajaja "rod" me da el resultado en segundos justo lo que necesitaba... ahora estoy pensado si pudiera simplificar este proceso en una funcion, pero bueno al menos gracias a su ayuda hemos podido llegar a una primera meta mmmmuuuuuchas gracias