Test Foro de elhacker.net SMF 2.1

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 (c++) [Seleccionar]
/*

Si el fichero es nuevo, le metemos los datos para la tabla, y la cubeta que nos dicen.

Reservamos memoria para la cubeta.

*/

void ficheroDisperso::crear(string& url, unsigned int tamTabla, unsigned int tamCubeta)

{

if(this->fDisp.is_open())

this->fDisp.close();

if(this->cub.datos == NULL)

delete[] this->cub.datos;



this->fDisp.open(url.c_str(), ios::in | ios::out | ios::binary | ios::trunc);



if(!this->fDisp.is_open())

throw excepciones::fichNoAbierto();



this->tamTabla=tamTabla;

this->tamCubeta=tamCubeta;

cub.datos = new Pueblo[this->tamCubeta];



this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));

this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));



for (unsigned int i=0; i <tamTabla; ++i)

{

this->fDisp.write(reinterpret_cast<char *>(&cub.tam), sizeof(unsigned int));

this->fDisp.write(reinterpret_cast<char *>(cub.datos), sizeof(Pueblo)*tamCubeta);

}

}


Pero no entiendo las líneas que ponen esto:

Código (c++) [Seleccionar]
this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));

this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));


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!