Потоковые классы (ifstream) на самом деле делают хорошую работу; при условии, что вы не ограничены, в противном случае обязательно отключите sync_with_stdio (в ios_base: :). Вы можете использовать getline () для непосредственного чтения в std :: strings, хотя с точки зрения производительности использование фиксированного буфера в качестве char * (вектор символов char или old-school char []) может быть быстрее (с более высоким риском / сложностью ).
Вы можете пойти по пути mmap, если хотите играть в игры с расчетами размера страницы и тому подобным. Я, вероятно, сначала построю его с использованием потоковых классов и посмотрю, достаточно ли это хорошо.
В зависимости от того, что вы делаете с каждой строкой данных, вы можете начать находить, что ваши процедуры обработки - это точка оптимизации, а не ввод-вывод.