Чтение буферизованного файла на C

#c #ifstream #bigdata

#c #ifstream #bigdata

Вопрос:

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

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

Комментарии:

1. напишите пользовательскую функцию. Вот как появляются инновации 🙂

Ответ №1:

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

 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 содержит содержимое файла.