C/C++

Кодировка в с++

Проблема в том, что в с++ русский текст выводится в консоль неправильно. Я знаю можно использовать команду setlocate, но каждый раз это писать неудобно. Как выставить правильную кодировку?
Как не задохнуться? Я знаю что можно делать вдох-выдох, но делать это каждый раз не удобно)
Вроде жабы дышат через кожу. Проверять это я конечно же не буду.
ДО
Денис Опарин
51 416
Лучший ответ
Все вопросы к Microsoft на самом деле. Без шуток. Понятно, что есть "легаси", но в 21 веке держать консоль в кодовой странице 866 по умолчанию (кириллица) - это... ммм перебор. Да даже 1251, если компилятор сам подставит..
Ну и частично "вопросы" к C++ т.к. он был призван быть кросплатформенным. А платформы оказались слишком разными.

Кст посмотрите работу с Wide Char в C++. wchar, wcout и т.д.

Собственно одна из причин появления PowerShell кмк. Ну это по-Microsoft'овски. Старое дер.. эмм "софт с проблемами" уже не устраивает - давайте вместо него сделаем другое новое. И не надо париться совместимостью. Тот-же .NET взамен WinAPI и всё такое. На минутку сколько сейчас версий .NET без обратной совместимости? =))

А так setlocale частично оправдан. Не все-же в utf-8 (н-р) работают. Гыгы
(тут сарказм т.к. setlocale может приводить к неожиданным последствиям (особенно с точки зрения начинающего программиста) на разных системах). Н-р часто вижу setlocale(LC_ALL, ""); Это может приводить к проблемам.

Ну и не о том Вы беспокоитесь ей б*гу. main-же не устали писать? ;) Сохраните "шаблон" приложения в файле. Открывайте когда начинаете новый проект. Делов-то.
Си++ тут не причем от слова совсем. Собственно у вас два варианта:
  1. Продолжать пользоваться Windows и перекодировать все русские строки в консольных приложениях в кодировку cp866
  2. Использовать нормальную ОС, там таких проблем нет в принципе.
Данияр Жузбаев Как выставить нужную кодировку?
utf8?
Данияр Жузбаев А как ее выставить?
Сложно, тяжело