StreamTokenizer - когда нужно файл "разобрать" по строкам. Посимвольно потом будешь разбирать сами строки.
Или точно не помню, StreamTokenizer позволяет разбивать файл не только на отдельные строки, но даже по словам. Или это (по словам) уже StringTokenizer.
В общем читай про эти 2 класса. У тебя скорее всего будет их комбинация.
[Ответ]
Если памяти не жалко (например, мелкий файл, или дофига памяти), то лучше прочитать весь файл сразу в память, а потом с ней работать. В этом случае мы используем всего три системных вызова: открыть файл, прочитать файл, закрыть файл (если размер заранее не известен, то четыре вызова - еще добавится получение статистики файла, чтоб узнать размер).
А если читать частями, то каждое дополнительное обращение к файлу есть дополнительный системный вызов. А системный вызов это достаточно медленное действие (процесс во время системного вызова прерывается и передается управление ядру. Ядро же в свою очередь передаст управление следующему процессу в системе, и не факт, что это сразу будет ваш процесс.).
Вроде ничего не упустил. Если что, поправьте.
[Ответ]
Dиmon, сильно упрощённо вроде так =)
Но можно использовать несколько потоков, читать данные и параллельно обрабатывать.
Кстати всё таки это не верно, касательно ReadFile и WindowsNT. По поводу разновидностей *nix не знаю. Если интересно, смотреть по поводу контекстов драйверов режима ядра.
[Ответ]