Напрямую использовать буфер потока C ++, например, для распаковки - PullRequest
0 голосов
/ 20 апреля 2020

Мой вариант использования - это чтение сжатого файла с диска, его поэтапное распаковывание и использование полученных данных.

В настоящее время я читаю содержимое файла во временный буфер, выделенный мной, наведите API декомпрессии на этот буфер и тд. Вопрос в том, чтобы понять, действительно ли временный буфер необходим или полезен в этом случае.

В эксперименте я открыл поток для текстового файла и однажды вызвал get (). В отладчике я вижу, что файловый буфер в потоке уже содержит следующие символы в текстовом потоке, как и ожидалось. (В msv c я нашел его в std::ifstream::_Filebuffer::_IGfirst)

Я ищу портативный способ доступа к этому буферу, который я вижу в отладчике, скорректирую им API декомпрессии и затем продолжаю читать файл .

Я не понимаю, почему я должен копировать файловый буфер в мой буфер (например, с помощью read ()) в этом конкретном случае, когда я буду быстро использовать содержимое буфера и двигаться дальше. Я не ставлю под сомнение достоинства буферного ввода-вывода в целом.

РЕДАКТИРОВАТЬ: Я провел дальнейшие эксперименты, и кажется, что внутренний буфер потока не используется, если цель read () сама по себе достаточно велика. Видимо, дело, о котором я беспокоился, на самом деле не подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...