Про русскую кодировку (С++).
Варианты рабочие:
setlocale (LC_ALL, ()) ;
setlocale (LC_ALL, (RU)) ;
А если такой вариант?
setlocale (LC_ALL, (RUS))
Все предложенные вами варианты использования setlocale кривые. Про прямые варианты можно узнать, прочитав man setlocale. Специально для тех, кто не знает, что такое man и не умеет пользоваться поиском приведу короткую цитату с его начала:
NAME
setlocale - set the current locale
SYNOPSIS
#include <locale.h>
char *setlocale(int category, const char *locale);
DESCRIPTION
The setlocale() function is used to set or query the program's current
locale.
If locale is not NULL, the program's current locale is modified accord‐
ing to the arguments. The argument category determines which parts of
the program's current locale should be modified.
Русской кодировки Си++ не существует в природе.
В природе существуют проблемы в консольных программах для Windows, потому что "гениальные" программисты из Microsoft додумались использовать для графических программ кодировку CP1251 а для консольных CP866 (она использовалась еще в DOS) а не менее "гениальные" программисты с "Ответов", вместо того, чтобы просто перекодировать исходный текст программы в CP866, начинают лезть в локали и городить бесполезный и/или опасный код. При этом эти "гениальные" люди даже не подозревают, насколько глубокие последствия могут иметь их действия по изменению локали. Каждый раз, когда мне попадаются на глаза вопросы из этой серии, я вспоминаю бессмертное высказывание Сергея Викторовича Лаврова. Ну вы поняли...
system("chcp 1251 > nul"); Первый раз такой код вижу
В C++ функция setlocale используется для установки локализации. Варианты, такие как setlocale(LC_ALL, "RU") и setlocale(LC_ALL, "Russian"), корректны для русской кодировки. Однако использование setlocale(LC_ALL, "RUS") может не сработать, так как стандартные локали обычно требуют полных названий, таких как "Russian" или "ru_RU" для корректной работ.