Есть ли лучший способ определить длину станда :: IStream, чем следующий:Лучший способ определить длину std :: istream?
std::istream* pcStream = GetSomeStream();
pcStream->seekg(0, ios::end);
unsigned int uiLength = pcStream->tellg();
Это только кажется, на самом деле расточительно должно стремиться к концу потока, а затем искать назад к оригиналу , особенно если поток может быть в файле на некоторых медленных носителях, таких как CD или DVD.
Зачем вам нужна длина? – sbi
API, который я использую, требует размера данных, которые я передаю. Он использует необработанный буфер символов и продолжает обрабатывать его до тех пор, пока он не достигнет конца буфера. – FlintZA
Вы можете использовать 'stat()' в файле. Тем не менее, это не быстрее, чем поиск в конце и поиск в начале, прежде чем читать содержимое ... вот как реализуются файловые дескрипторы. Конечно, 'stat()' не является C++, и для этого требуется имя файла ... –