2012-07-12 30 views
6

Estoy implementando un programa en C++ utilizando ifstream que debe buscar en archivos de gran tamaño (~ 1TB). Sin embargo, esto falla después de leer 2GB. ¿Hay alguna manera de obtener posiciones de archivos, incluso para archivos grandes? Compilo para una máquina de Windows de 32 bits.Buscando en archivos grandes con ifstream

std::ifstream f; 
f.open(filename.c_str(), std::ifstream::in | std::ifstream::binary); 
while(true) { 
    std::cout << (uint64_t)(f.tellg()) << std::endl; 
    //read data 
} 
+0

no sé si esto realmente cambia nada, pero ¿Has intentado utilizar la alternativa C simple de leer archivos? – stefan

+0

@stefan tiene controlador de posición de archivo C simple cuyo tamaño es mayor que 32 bits? – triclosan

+0

@triclosan como dije: No sé, era solo una idea – stefan

Respuesta

1

Puesto que usted está compilando en una plataforma de 32 bits, si se utiliza fstream, usted va a conseguir el acceso de 32 bits. Para acceder a archivos de gran tamaño, es necesario utilizar una solución dependiente de la plataforma:

+0

Utilizaré estas funciones. ¡Gracias! – Patrik