Esiste un modo migliore per determinare la lunghezza di uno std :: istream al massimo i seguenti:Un modo migliore per determinare la lunghezza di un std :: istream?
std::istream* pcStream = GetSomeStream();
pcStream->seekg(0, ios::end);
unsigned int uiLength = pcStream->tellg();
sembra solo molto dispendioso di avere a cercare alla fine del flusso e poi cercare di nuovo all'originale posizione, soprattutto se il flusso potrebbe essere in un file su alcuni supporti lenti come un CD o un DVD.
Perché hai bisogno della lunghezza? – sbi
Un'API che sto utilizzando richiede la dimensione dei dati che sto trasmettendo. Utilizza un buffer di caratteri non elaborati e continua a elaborarli finché non raggiunge la fine del buffer. – FlintZA
Si potrebbe usare 'stat()' sul file. Tuttavia, non è più veloce che cercare alla fine e cercare all'inizio, prima di leggere il contenuto ... ecco come vengono implementati i descrittori di file. Certo, 'stat()' non è C++ e richiede un nome file ... –