setlocale и linux

174
01 апреля 2018, 20:46

Пишу на линуксе и никогда не в код не вставляю:

setlocale(LC_ALL, "rus");

При этом символы кирилицы выводятся без проблем. Под виндой в этом случае выведет кракозябры? Почему под линуксом все в порядке?

Answer 1

Проблема не в операционной системе, а в терминале. Стандартный cmd работает в кодировке 866, при этом попытка настроить локали для вывода строк из исходников приводит к тому, что ввод и вывод начинают работать в разных кодировках (если ввод кириллицы не нужен - setlocale решает проблему). Более-менее рабочим решением является правильная настройка локалей для последовательности ввод-вывод, и сохранение исходников в соответствующей кодировке.

В PowerShell ситуация вроде бы немного лучше, его хотя бы можно настроить для кириллицы, но по умолчанию он тоже плохо с ней работает.

READ ALSO
Ошибка программы

Ошибка программы

Такие ошибки:

174
Нечитаемые символы в cout

Нечитаемые символы в cout

Вот весь код, подскажите пожалуйста на каком этапе ломается читаемость и как это исправить?

144
Запуск Gitlab Runner для C++/Qt проекта на Mac OS

Запуск Gitlab Runner для C++/Qt проекта на Mac OS

Здравствуйте! Есть задача запустить Gitlab Runner для сборки C++/Qt проекта на Mac OSЗнаю, что для сборки просто C++ проекта можно использовать Nuget и MSBuild

157
Объясните, как работает этот foreach для tuple

Объясните, как работает этот foreach для tuple

Помогите разобраться, как работает функция обхода кортежа:

182