Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В чем отличие system("chcp 1251>NULL"); и setlocale(LC_ALL, "Russian"); в с++

marmarrrr Знаток (434), закрыт 3 года назад
.........
Лучший ответ
Дед Мазай Гений (58129) 3 года назад
Это два разных способа наладить работу русских букв в консоли Windows.
system("chcp 1251>NULL");
Выполняет указанную команду ОС для изменяется кодировки консоли. В результате правильно работает ввод и вывод русских букв.
Это не работает в Windows 7, если выбран точечный шрифт в консоли.

setlocale(LC_ALL, "Russian");
Что-то настраивает в библиотеке stdlib, в результате чего она начинает выводить текст в кодировке консоли. Это одинаково работает независимо от строки в кавычках. Ввод русских букв продолжает работать неправильно.

Оба способа работают, только если Windows настроен на русский язык (язык для программ не поддерживающих Юникод). Современные программы должны работать независимо от этой настройки.
Дед МазайГений (58129) 3 года назад
* в библиотеке stdio (вместо stdlib)
Евгений Высочин Просветленный (38043) Дед Мазай, вообще правильно написал. System() почему-то описан в stdlib.h, но работает и без него, просто при наличии подключённой stdio.h. Может это ошибка в описании стандартной библиотеки.
Остальные ответы
Батаев Дмитрий Просветленный (23296) 3 года назад
по сути ничем. И то и это подключают языковую поддержку кириллицы
Батаев ДмитрийПросветленный (23296) 3 года назад
время выставляют и дату "по -русски" setlocal
Евгений Высочин Просветленный (38043) 3 года назад
system() работает через консольные команды операционной системы

setlocale() работает через подключенную библиотеку локализации языка Си в данной ОС
Похожие вопросы