napisana funkcja zwraca nieprawidłową wielkość pliku

0

cześć,
napisałem funkcję, która ma zwracać wielkość pliku w bajtach.
Dla małych plików (test.txt) zwraca poprawną wielkość 9 bajtów, ale dla większych (test1.txt) Windows pokazuje 10 698 a funkcja 8315
co zrobiłem źle albo czego nie wziąłem pod uwagę?

void ile(string NazwaPliku)
{
	ifstream Plik;
	Plik.open(NazwaPliku);
	if (Plik.good())
		{
		cout << "plik zostal otwary" << endl;
		}
	else
		{
		cout << "blad otwierania pliku!" << endl;
		return;
		};

	char Bufor;
	int RozmiarPliku = 0;
	
	cout << "sprawdzam rozmiar pliku..." << endl;

	while (true)
	{
		Plik >> Bufor;
		bool TestKoncaPliku;
		TestKoncaPliku = Plik.good();
		if (!TestKoncaPliku) break;
		RozmiarPliku++;
	};

	cout << "rozmiar pliku wynosi: " << RozmiarPliku << " bajtow" << endl;
}
2
size_t get_filesize(const std::string& path)
{
    std::ifstream file(path, std::ios::binary | std::ios::ate | std::ios::in);
    return static_cast<size_t>(file.tellg());
}
0

dzięki.
a jak właściwie działa ta funkcja? Co się po kolei tutaj dzieje?

0

W C++17 jest też filesystem::file_size

1 użytkowników online, w tym zalogowanych: 0, gości: 1