Все вопросы к Microsoft на самом деле. Без шуток. Понятно, что есть "легаси", но в 21 веке держать консоль в кодовой странице 866 по умолчанию (кириллица) - это... ммм перебор. Да даже 1251, если компилятор сам подставит..
Ну и частично "вопросы" к C++ т.к. он был призван быть кросплатформенным. А платформы оказались слишком разными.
Кст посмотрите работу с Wide Char в C++. wchar, wcout и т.д.
Собственно одна из причин появления PowerShell кмк. Ну это по-Microsoft'овски. Старое дер.. эмм "софт с проблемами" уже не устраивает - давайте вместо него сделаем другое новое. И не надо париться совместимостью. Тот-же .NET взамен WinAPI и всё такое. На минутку сколько сейчас версий .NET без обратной совместимости? =))
А так setlocale частично оправдан. Не все-же в utf-8 (н-р) работают. Гыгы
(тут сарказм т.к. setlocale может приводить к неожиданным последствиям (особенно с точки зрения начинающего программиста) на разных системах). Н-р часто вижу setlocale(LC_ALL, ""
![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
; Это может приводить к проблемам.
Ну и не о том Вы беспокоитесь ей б*гу. main-же не устали писать?
![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Сохраните "шаблон" приложения в файле. Открывайте когда начинаете новый проект. Делов-то.