J'utilise Linux et C++. J'ai un fichier binaire avec une taille de 210732 octets, mais la taille rapportée avec seekg/tellg est 210728.C++: obtention d'une taille de fichier incorrecte
Je reçois les informations suivantes de ls-la, à savoir 210732 octets:
-RW rw-r-- 1 PJS PJS 210732 17 février 10h25 output.osr
Et avec l'extrait de code suivant, je reçois 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;
donc, mon code est désactivé par 4 octets . J'ai confirmé que la taille du fichier est correcte avec un éditeur hexadécimal. Alors pourquoi je ne reçois pas la bonne taille?
Ma réponse: Je pense que le problème a été causé par la présence de plusieurs fstreams ouverts dans le fichier. Au moins, cela semble l'avoir réglé pour moi. Merci à tous ceux qui ont aidé.
Est-ce le cas dans tous les systèmes de fichiers (en cas vous en avez plusieurs)? – hlovdal
Malheureusement, je n'ai pas l'option de tester sur un autre système de fichiers. – PSJ
Fonctionne bien sur mon système Ubuntu 32 bits. Utilisez-vous g ++? – tur1ng