Top.Mail.Ru
Ответы

Про русскую кодировку (С++).

Варианты рабочие:
setlocale (LC_ALL, ()) ;
setlocale (LC_ALL, (RU)) ;
А если такой вариант?
setlocale (LC_ALL, (RUS))

По дате
По рейтингу
Аватар пользователя
Мастер

Все предложенные вами варианты использования setlocale кривые. Про прямые варианты можно узнать, прочитав man setlocale. Специально для тех, кто не знает, что такое man и не умеет пользоваться поиском приведу короткую цитату с его начала:

12345678910111213141516
 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, начинают лезть в локали и городить бесполезный и/или опасный код. При этом эти "гениальные" люди даже не подозревают, насколько глубокие последствия могут иметь их действия по изменению локали. Каждый раз, когда мне попадаются на глаза вопросы из этой серии, я вспоминаю бессмертное высказывание Сергея Викторовича Лаврова. Ну вы поняли...

Аватар пользователя
Искусственный интеллект
1
 system("chcp 1251 > nul"); 
Аватар пользователя
Ученик

Первый раз такой код вижу

Аватар пользователя
Мастер

В C++ функция setlocale используется для установки локализации. Варианты, такие как setlocale(LC_ALL, "RU") и setlocale(LC_ALL, "Russian"), корректны для русской кодировки. Однако использование setlocale(LC_ALL, "RUS") может не сработать, так как стандартные локали обычно требуют полных названий, таких как "Russian" или "ru_RU" для корректной работ.



Видео по теме