не читается кириллица

нужно выполнить задание на 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 шт):

Автор решения: Shuupa

Попробуйте вызвать набор символов LC_СTYPE. setlocale(LC_CTYPE, "rus ("Или Russian")") также добавить файл #include <clocale

→ Ссылка