Всегда как то с неохотой пользовался и не желал разбираться в плюсовых *stream, а тут понадобилось. В общем, задача - максимально быстро читать бинарные данные (например, int) из файла, заняв при этом не более точно известного количества памяти для этого чтения (данных много, счет идет на десятки-сотни мегабайт). Куда они потом идут - не суть.
мой вариант (черновой пример, показывающий идею).
std::ifstream file("data", std::ios::binary);
char* buffer = new char[MAX_MEMORY];
file.rdbuf()->pubsetbuf(buffer, MAX_MEMORY);
//blablabla
//читаем int
int value;
file.read(reinterpret_cast<char*>(&value, sizeof(value));