Estoy usando Linux y C++. Tengo un archivo binario con un tamaño de 210732 bytes, pero el tamaño indicado con seekg/tellg es 210728.C++: obteniendo un tamaño de archivo incorrecto
consigo la siguiente información de ls-la, es decir, 210732 bytes:
-RW -rw-r-- 1 pjs pjs 210732 Feb 17 de 10:25 output.osr
Y con el siguiente fragmento de código, consigo 210728:
std::ifstream handle;
handle.open("output.osr", std::ios::binary | std::ios::in);
handle.seekg(0, std::ios::end);
std::cout << "file size:" << static_cast<unsigned int>(handle.tellg()) << std::endl;
Así que mi código está desactivada de 4 bytes . He confirmado que el tamaño del archivo es correcto con un editor hexadecimal. Entonces, ¿por qué no obtengo el tamaño correcto?
Mi respuesta: Creo que el problema fue causado por tener múltiples fstream abiertos en el archivo. Al menos eso parece haberlo solucionado. Gracias a todos los que ayudaron.
Es este el caso en todos los sistemas de archivos (en el caso tienes varios)? – hlovdal
Desafortunadamente, no tengo la opción de probar en un sistema de archivos diferente. – PSJ
Funciona bien en mi sistema Ubuntu de 32 bits. ¿Usas g ++? – tur1ng