Buen Día, mi duda es acerca de la lectura de archivos Binarios, este es el código:
void CargarInformacion(struct TNodo<Usuarios> **Lista)
{
struct Usuarios Load;
ifstream Datos("Base De Datos.dat", ios::binary);
if (Datos.good())
while (!Datos.eof())
if ( Datos.read((char*)&Load, sizeof(Load)) )
InsertarFinal(Lista, Load);
Datos.close();
}
La Funcion funciona!!! pero no se por que hay que colocar esto
Datos.read((char*)&Load, sizeof(Load))
dentro de un if, le pregunte a alguien pero me dice que es para que no lea 2 veces lo mismo, pero esa es la duda... por que????
Gracias por su tiempo. ;)
read() retorna el número de bytes leídos. Si leyese 0 bytes, qué pasaría?
Ese if() comprueba que se lea un número diferente de 0 bytes.
Muchas Gracias por aclararme la duda.
Espera Espera, me equivoqué con otro read().
El return de ese read() es el objeto ifstream. Un ifstream retorna TRUE si todo va bien, y retorna FALSE si hubo errores.
EDITO: Por si te ayuda, CPlusPlus (http://www.cplusplus.com/reference/istream/istream/read/)
OK. :)
Por cierto en ese bucle:
while (!Datos.eof())
if ( Datos.read((char*)&Load, sizeof(Load)) )
InsertarFinal(Lista, Load);
No es necesario utilizar la función miembro eof, se puede acortar a:
while (Datos.read((char *) &Load, sizeof(Load)))
InsertarFinal(Lista, Load);
Un saludo
Gracias lo tendré en cuenta.