не читается кириллица
нужно выполнить задание на C++ "дано предложение. вывести все имеющиеся в нем буквосочетания нн", но кириллица просто не выводится как надо
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int cnt = 0;
string sentence;
cin >> sentence;
for (int i = 0; i < (sentence.length() - 1); i++)
{
if (sentence[i] == 'н' && sentence[i + 1] == 'н')
cnt++;
}
cout << cnt << endl;
cout << "привет" << endl;
cout << sentence << endl;
return 0;
}
я пробовал любые локали, нормально выводилось только через setlocale(LC_ALL, "Russian")
, но символы в sentense
как будто просто не читались как символы кириллицы, при этом вывод слово привет работал нормально, потому что setlocale(LC_ALL, "Russian")
работает только на вывод как я понял.
проверял на этой строке
cout << "привет" << endl;
сейчас я решил поставить кодировку 1251, и программа стала работать, только проблема в том, что читается первое слово, я думаю проблема в том, что пробел тригерит sentence.length()
, и из-за него длина sentence
просто заканчивается
скажите, как исправить проблему с пробелом, стоит ли работать с кодировкой 1251, либо же стоит поменять её на UTF-8 и почему?
Ответы (1 шт):
Попробуйте вызвать набор символов LC_СTYPE. setlocale(LC_CTYPE, "rus ("Или Russian")") также добавить файл #include <clocale