Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Don Pollo en 15 Junio 2011, 11:41 am



Título: Problema con varias lineas de código [C++]
Publicado por: Don Pollo en 15 Junio 2011, 11:41 am
Veréis, tengo el siguiente código que nos ha dejado el profesor:

Código
  1. /*
  2.  
  3. Si el fichero es nuevo, le metemos los datos para la tabla, y la cubeta que nos dicen.
  4.  
  5. Reservamos memoria para la cubeta.
  6.  
  7. */
  8.  
  9. void ficheroDisperso::crear(string& url, unsigned int tamTabla, unsigned int tamCubeta)
  10.  
  11. {
  12.  
  13. if(this->fDisp.is_open())
  14.  
  15. this->fDisp.close();
  16.  
  17. if(this->cub.datos == NULL)
  18.  
  19. delete[] this->cub.datos;
  20.  
  21.  
  22.  
  23. this->fDisp.open(url.c_str(), ios::in | ios::out | ios::binary | ios::trunc);
  24.  
  25.  
  26.  
  27. if(!this->fDisp.is_open())
  28.  
  29. throw excepciones::fichNoAbierto();
  30.  
  31.  
  32.  
  33. this->tamTabla=tamTabla;
  34.  
  35. this->tamCubeta=tamCubeta;
  36.  
  37. cub.datos = new Pueblo[this->tamCubeta];
  38.  
  39.  
  40.  
  41. this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));
  42.  
  43. this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));
  44.  
  45.  
  46.  
  47. for (unsigned int i=0; i <tamTabla; ++i)
  48.  
  49. {
  50.  
  51. this->fDisp.write(reinterpret_cast<char *>(&cub.tam), sizeof(unsigned int));
  52.  
  53. this->fDisp.write(reinterpret_cast<char *>(cub.datos), sizeof(Pueblo)*tamCubeta);
  54.  
  55. }
  56.  
  57. }

Pero no entiendo las líneas que ponen esto:

Código
  1. this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));
  2.  
  3. this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));
  4.  

Podrían decirme cuál es su finalidad? Si no creo mal, podría ser algo de un casting?

Gracias de antemano!  ;D


Título: Re: Problema con varias lineas de código [C++]
Publicado por: El_Java en 15 Junio 2011, 12:06 pm
Si, es un casting, convierte tamTabla y tamCubeta en un char*
Saludos.


Título: Re: Problema con varias lineas de código [C++]
Publicado por: Don Pollo en 15 Junio 2011, 12:27 pm
Y para que me podría servir convertir un unsigned int en un char*?


Título: Re: Problema con varias lineas de código [C++]
Publicado por: fantasma306 en 15 Junio 2011, 12:49 pm
puede ser por que fDisp es un archivo y lo estas tratando como si fuese binario ?!...
para escribir en un archivo binario, los datos se escriben como si fuesen char*

saludos


Título: Re: Problema con varias lineas de código [C++]
Publicado por: Don Pollo en 15 Junio 2011, 12:58 pm
Como habéis podido leer, ando algo verde aún con lo del manejo de archivos y tal  :-\

Pero bueno, ya me habéis solucionado la duda, muchas gracias a los dos!