Both works.
The main reason would be consistency: you're iterating over a collection or the characters of a string the same way, by requesting an iterator and making it advance.
I would not say the implementation details of ++it resulting in a pointer increment compared to str[i] involving pointer arithmetics is worth mentioning. And range checking are implementation detail as well.