secret secretom, Все далеко не так просто.
Если интересно подробней разобраться в вопросе то начните с этого: https://code-live.ru/post/cpp-cyrillic-manual/
там более углубленно описана проблема и ее решение.
Важно понимать следующее:
1.имеет значение в какой кодировке написаны исходники.
2.при компиляции компилятор ничего не перекодирует
3.setlocale то же ничего не перекодирует
4.в консоли винды стандартная кодировка cp866 (а вовсе не ср1251), кодировку в консоли можно переключать командами консоли (chcp). Кодировку консоли можно менять из вашей программы. В русской винде в консоли могут встречаться 2 вышеперечисленные кодировки (может еще быть и UTF8), впрочем никто не мешает переключиться на любую другую не русскую кодировку.
5.в никсах нет этого безобразия
6.из программы менять кодировку консоли - дурной тон, будете трижды прокляты пользователями программы :). Это конечно не относится к программам, которые дальше вашего компа не выйдут.