Неправильно выводит русские символы в char

Пытаюсь сохранить русский символ в переменной unsigned char, но при сохранении символа 'а'(русского) выводит другой('р'). Проверял на разных русских символах и понял, что выводится буква на 16 порядков выше, то есть для 'б' выводится 'с', для 'в' - 'т' и т.д.

unsigned char a = 'в';
std::cout << a;

Думал уменьшить числовое значение char на 16, но выводит уже не буквы

unsigned char a = int('а') - 16;

Как мне все-таки вывести тот символ, который я ввел?


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

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

У вас не подключена локализация. Используйте setlocale(LC_ALL,"Russian");

#include <iostream>
#include <clocale> //Обязательно для функции setlocale()

using namespace std;

int main()
{
    setlocale(LC_ALL,"Russian");
    unsigned char a = 'в';
    std::cout << a;
    return 0;
}
→ Ссылка