Кодировка в консоли и локаль
int main() {
//setlocale(LC_ALL, "ru");
std::string X;
std::cin >> X;
std::cout << "Привет" << std::endl << X;
return 0;
}
В это случае, если ввести в переменную X кириллицу, то "Привет" выведется непонятным набором символов, строка X выведется правильно.
int main() {
setlocale(LC_ALL, "ru");
std::string X;
std::cin >> X;
std::cout << "Привет" << std::endl << X;
return 0;
}
Здесь же произойдет все наоборот: "Привет" выведется верно, а наша строка непонятно, почему так происходит? установка локали позволяет выводить в консоль кириллицу, но из ввода - нет. Разве она не добавляет в кодировку нужный алфавит(кроме форматирования дат и т.п)? И в итоге помимо установки локали нужно дополнительно прописать SetConsoleCP(1251), чтобы из ввода мы могли получать кириллицу.
P.S. А если мы установили нужную локаль, нужно ли прописывать SetConsoleOutputCP?