I've always assumed it to be more efficient, when processing text files, to first read the contents (or part of it) into an std::string or char array, as — from my limited understanding — files are read from memory in blocks much larger than the size of a single character. However, I've heard that modern OS's are often not actually directly reading from the file anyway, making my manually buffering the input little benefit.

Say I wanted to determine the number of a certain character in a text file. Would the following be inefficient?

while (fin.get(ch)) {
    if (ch == 'n')
        ++char_count;
}

Granted, I guess it would depend on file size, but does anyone have any general rules about what's the best approach?

Edit
Report