C ++ буферизованное чтение файлов - PullRequest
2 голосов
/ 02 ноября 2011

Интересно, может ли чтение большого текстового файла построчно (например, std :: getline или fgets) быть буферизировано с предопределенным размером буфера чтения, или нужно использовать специальные побайтовые функции?

Я имею в виду чтениеочень большие файлы с оптимизацией числа операций ввода / вывода (например, чтение 32 МБ с жесткого диска за раз).Конечно, я могу читать с буферизацией вручную, но я думал, что у стандартных файловых потоков есть такая возможность.

1 Ответ

5 голосов
/ 02 ноября 2011

Ни построчные, ни специальные побайтовые функции.Вместо этого вам следует выполнить следующее:

std::ifstream file("input.txt");
std::istream_iterator<char> begin(file), end;

std::vector<char> buffer(begin, end); //reading the file is done here!
//use buffer. it contains the content of the file!

И все готово, так как buffer содержит содержимое файла.

...