этих костылей с CP1251
Вроде, от windows 10 и ещё манифест может понадобиться.
Ну я бы в эту сторону копал короче, звучит как наиболее идеологически правильный путь.
1251 удобна тем, что она однобайтовая. А без костылей на разных версиях windows нет супер универсального способа
по идее можно кстати, но каков смысл, может он хочет, чтобы код работал правильно без доп настроек терминала
Забудь про UTF8 в с++. От лукавого оно.
А, ну если чел хочет подстраиваться под какое-то странное окружение, то желаю ему удачи)
$ cat a.cpp #include <iostream> int main() { std::cout << "Привет, мир!" << std::endl; } $ g++ a.cpp $ ./a.out Привет, мир! На моем линуксе все работает 🤷♂️ Может все-таки дотюнить винду так же?)
В windows и linux in и out работают в разном режиме.
Он, конечно, дотюнить винду может, но что делать, если он захочет скинуть свою программу 100500 друзьям...
Суть контейнера типа "строка" не в том, чтобы ее тупо в консоль вывести, а в том чтобы его (контейнер) всяко разно обрабатывать. С++ - это число дробилка. Для задач "принять и пробросить" масса других языков есть - питон, джава-скрипт, ets.. А с точки зрения обработки контейнера символов - Utf8-строка это контейнер с последовательным forward-доступом, а строка char, wchar, char16 тп - это контейнер с произвольным доступом. Почувствуйте разницу. Это как массив и forward-list. Фтопку.
> Utf8-строка это контейнер с последовательным forward-доступом, а строка char, wchar, char16 тп - это контейнер с произвольным доступом. Ну для ряда задач это не важное различие Для ряда задач потребуется поддержка многих разных языков, то есть без unicode-ных кодировок все равно никуда. (Впрочем может есть и другие кодировки с сопоставимым количеством символов; я о таких не слышал) А для еще ряда задач потребуются концепции вроде графем, для которых ни одна из общепринятых кодировок все равно не даст произвольный доступ. Поэтому серебряной пули все равно нет, а utf8 очень хочется продвигать как разумный дефолт. Уж явно лучше, чем однобайтовые кодировки, начисто урезающие способность к интернационализации.
А как utf8-строка может быть иметь последовательный доступ, если это всё тот же набор байт, но которые выводятся через фасет в терминал?
Да без вопросов. С++ великолепен тем, что для любой своей задачи Вы можете склепать своего бульдога.
Аргумент в том, что нет эффективной операции вида "получить n-ый символ"
От системы зависит
Нет даже разумного дефолта. Полно задач где utf8 ненужен и вреден
Обсуждают сегодня