Почему некорректно обрабатываются строки в C++, и как это исправить?
Вы работаете с юникодом и русские буквы занимают не 1 байт, а 2?
cppwhispers.blogspot.ru/2012/11/unicode-and-your-a...
In GCC, on modern systems, the default encoding for char string literals is UTF8. 
А чтобы не зависеть от компилятора и среды, курите современную теорию: раз, два.