if else не отрабатывает, если слова на русском языке

Не сильна в теме. Задание. Если у контейнера map ключ-значение на английском языке, код работает как надо. Но мне нужен русский. Тогда if else как будто не видит этого.

#include <iostream>
#include <map>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    setlocale(LC_ALL, "Russian");
    string country;
    string city;
    // Создадим словарь
    map <string, string> Capitals;
    // Заполним его несколькими значениями
    
    Capitals["Греция"] = "Афины";
    Capitals["Сербия"] = "Белград";
    Capitals["Германия"] = "Берлин";
    Capitals["Швейцария"] = "Берн";
    Capitals["Ирландия"] = "Дублин";
    Capitals["Украина"] = "Киев";
    Capitals["Дания"] = "Копенгаген";
    Capitals["Люксембург"] = "Люксембург";
    Capitals["Испания"] = "Мадрид";
    Capitals["Монако"] = "Монако";
    Capitals["Россия"] = "Москва";
    Capitals["Норвегия"] = "Осло";
    Capitals["Франция"] = "Париж";
    Capitals["Черногория"] = "Подгорица";
    Capitals["Чехия"] = "Прага";
   
    cout << "В какой стране вы живете? ";
    cin >> country;
    // Проверим, есть ли такая страна в словаре Capitals
    if (Capitals.count(country))
    {
        // Если есть - выведем ее столицу
        cout << "Столица вашей страны " << Capitals[country] << endl;
    }
    else
    {
        // Запросим название столицы и добавив его в словарь
        cout << "Как называется столица вашей страны? ";
        cin >> city;
        Capitals[country] = city;
    }
}

Ответы (1 шт):

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

https://ru.stackoverflow.com/questions/459154/Русский-язык-в-консоли

#include <iostream>
#include <io.h>
#include <fcntl.h>

#include <map>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    setlocale(LC_ALL, "ru-ru");
    if (_setmode(_fileno(stdout), _O_U16TEXT) < 0 or
        _setmode(_fileno(stdin), _O_U16TEXT) < 0 or
        _setmode(_fileno(stderr), _O_U16TEXT) < 0)
    {
        wcerr << L"Всё плохо"; wcin.get(); return -1; // тут грязно
    }

    wstring country;
    wstring city;
    // Создадим словарь
    map <wstring, wstring> Capitals;
    // Заполним его несколькими значениями

    Capitals[L"Греция"    ] = L"Афины";
    Capitals[L"Сербия"    ] = L"Белград";
    Capitals[L"Германия"  ] = L"Берлин";
    Capitals[L"Швейцария" ] = L"Берн";
    Capitals[L"Ирландия"  ] = L"Дублин";
    Capitals[L"Украина"   ] = L"Киев";
    Capitals[L"Дания"     ] = L"Копенгаген";
    Capitals[L"Люксембург"] = L"Люксембург";
    Capitals[L"Испания"   ] = L"Мадрид";
    Capitals[L"Монако"    ] = L"Монако";
    Capitals[L"Россия"    ] = L"Москва";
    Capitals[L"Норвегия"  ] = L"Осло";
    Capitals[L"Франция"   ] = L"Париж";
    Capitals[L"Черногория"] = L"Подгорица";
    Capitals[L"Чехия"     ] = L"Прага";

    wcout << L"В какой стране вы живете? ";
    wcin >> country;
    // Проверим, есть ли такая страна в словаре Capitals
    if (Capitals.count(country))
    {
        // Если есть - выведем ее столицу
        wcout << L"Столица вашей страны " << Capitals[country] << endl;
    }
    else
    {
        // Запросим название столицы и добавив его в словарь
        wcout << L"Как называется столица вашей страны? ";
        wcin >> city;
        Capitals[country] = city;
    }

    wcin.get();
    wcin.get();
}

Ну или просто

#include <iostream>
#include <Windows.h>

#include <map>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251); 
    setlocale(LC_ALL, "ru-ru");

    string country;
    string city;
    // Создадим словарь
    map <string, string> Capitals;
    // Заполним его несколькими значениями

    Capitals["Греция"    ] = "Афины";
    Capitals["Сербия"    ] = "Белград";
...
→ Ссылка