Używam systemu Linux i C++. Mam plik binarny o rozmiarze 210732 bajtów, ale rozmiar zgłaszano seekg/tellg jest 210728.C++: Pobieranie nieprawidłowego rozmiaru pliku
uzyskać następujące informacje od ls-la, tj 210732 bajtów:
-RW -RW-r-- 1 pjs pjs 210732 lut 17 10:25 output.osr
I z poniższym fragmencie kodu, otrzymuję 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;
Więc mój kod jest wyłączony przez 4 bajty . Potwierdziłem, że rozmiar pliku jest poprawny za pomocą edytora szesnastkowego. Dlaczego więc nie otrzymuję prawidłowego rozmiaru?
Moja odpowiedź: wydaje mi się, że przyczyną problemu było posiadanie wielu otwartych plików źródłowych do pliku. Przynajmniej wydaje mi się, że to załatwiło sprawę. Dziękuję wszystkim, którzy pomogli.
Czy to przypadek we wszystkich systemach plików (w przypadku masz kilka)? – hlovdal
Niestety, nie mam opcji testowania na innym systemie plików. – PSJ
Działa dobrze na moim 32-bitowym systemie Ubuntu. Czy używasz g ++? – tur1ng