Исходя из C, я немного экспериментирую с C++ и наткнулся на что-то столь же простое, как чтение двоичных данных из файла в буфер с использованием ifstream
. Мне кажется, что у меня есть три варианта для чтения данных из файла:Потоковые бинарные файлы в C++
get()
, который получает один символ, который кажется странным и неэффективными для чтения большой части данных в буфер памяти;read()
, который не возвращает, сколько символов он действительно читает; иreadsome()
, который, если я правильно его понимаю, возвращает только ранее буферизованные данные, но не считывает ничего нового из фактического файла.
Что поражает меня как особенно странно это read()
функция, которая, мне кажется, совершенно непригодным для видя, как он не говорит, сколько байтов он фактически помещается в буфер. Тем не менее, весь пример кода, который я вижу, использует, кажется, проверяет, что это так, и обычно ищет конец файла для извлечения размера файла и последующего выделения буфера. Очевидно, что это не работает для потоковой передачи данных.
Итак, как же на самом деле предполагается поток файла/pipe/socket с нетекстовыми данными на C++? Может быть, есть лучшее средство, чем ifstream
?
Ах, 'gcount()' похоже, что я пропал без вести. Благодаря! – Dolda2000