Czy istnieje lepszy sposób określić długość std :: istream niż:Lepszy sposób określenia długości std :: istream?
std::istream* pcStream = GetSomeStream();
pcStream->seekg(0, ios::end);
unsigned int uiLength = pcStream->tellg();
tylko wydaje się naprawdę marnotrawny musiał szukać na końcu strumienia, a następnie starać się z powrotem do oryginału pozycja, szczególnie jeśli strumień może znajdować się w pliku na niektórych wolnych nośnikach, takich jak dysk CD lub DVD.
Dlaczego potrzebujesz długości? – sbi
Interfejs API, którego używam, wymaga rozmiaru danych, które przekazuję. Używa bufora znaków surowych i kontynuuje przetwarzanie, dopóki nie dotrze do końca bufora. – FlintZA
Możesz użyć 'stat()' w pliku. Jednak nie jest to wcale szybsze niż szukanie na końcu i odszukanie na początku przed przeczytaniem zawartości ... tak właśnie zaimplementowano deskryptory plików. Oczywiście, 'stat()' nie jest C++ i wymaga nazwy pliku ... –