В чем отличие system("chcp 1251>NULL"); и setlocale(LC_ALL, "Russian"); в с++
.........
Это два разных способа наладить работу русских букв в консоли Windows.
system("chcp 1251>NULL");
Выполняет указанную команду ОС для изменяется кодировки консоли. В результате правильно работает ввод и вывод русских букв.
Это не работает в Windows 7, если выбран точечный шрифт в консоли.
setlocale(LC_ALL, "Russian");
Что-то настраивает в библиотеке stdlib, в результате чего она начинает выводить текст в кодировке консоли. Это одинаково работает независимо от строки в кавычках. Ввод русских букв продолжает работать неправильно.
Оба способа работают, только если Windows настроен на русский язык (язык для программ не поддерживающих Юникод). Современные программы должны работать независимо от этой настройки.
по сути ничем. И то и это подключают языковую поддержку кириллицы
system() работает через консольные команды операционной системы
setlocale() работает через подключенную библиотеку локализации языка Си в данной ОС