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["Сербия" ] = "Белград";
...