При вводе слов на русском языке из терминала некорректно срабатывает удаление символов.
Вот та часть кода:
Код: Выделить всё
string str;
cin >> str;Если ввести слово с первого раза, то всё в порядке. Но если, допустим, при вводе мы допускаем ошибку и удаляем, а затем продолжаем вводить слово, то результат будет некорректным.
Например:
1) вводим "Слон";
2) удаляем букву "н", при этом на экране остается "Сло";
3) продолжаем ввод "во", на экране остается "Слово".
4) теперь выводим введённое слово в терминал, получаем "Сло?во", где вместо знака вопроса стоит какой-то левый символ.
С английским языком таких проблем нету.
Как я понял, дело в том, что английские символы кодируются одним байтом, а русские двумя. При нажатии Backspace буква с экрана исчезает, но её код стирается не полность из буфера, а только младший байт. Старший при этом сохраняется и затем записывается в строковую переменную.
А теперь сам вопрос, как с этим бороться? Мне нужно, чтобы при нажатии Backspace стирался весь русский символ, а не его младший байт...
Или может возможно временно сменить кодировку при вводе/выводе в терминал, чтобы все символы кодировались одним байтом? Но как это сделать, не нашел...