For instance while I have not yet reached the end of the string I would feed my characters into a buffer until I found the end of the string
The point however is that instead of reading characters step by step some lexers will instead have a look at a buffer of a certain size and move a pointer around in that buffer and modify some bytes in place (in-situ).
He talks about this buffer, at one moment in terms of bytes, another moment in terms of characters.
It's a pedantic quibble, but an easy source of errors, especially if you're using a language that doesn't distinguish strongly between the two concepts, and e.g. you encode your characters as UTF8 with a weak alias to unsigned char just like bytes.