Насколько я понял, в некоторых системах используется UTF-16, там будет wchar, а в системах с UTF-8 будет обычный char. Или это как-то от компилятора зависит (у меня clang)?
От компилятора не зависит. От кодировки как ни странно тоже не зависит. Зависит от приложения и того, как приложение работает с текстом. Какие кодировки использует и какие программные средства для работы с ними. В общем это сложный вопрос.
Просто в repl.it, например, не получается сделать так std::cout << 'Ц'; character too large for enclosing character literal type
Там есть 20 способов как это правильно сделать и 200 способов как можно ошибиться.
Тебе зачем это надо ? Для учёбы -- пиши по-английски.
А нужен именно кланг7 ?
Потому что 'Ц' - не всегда влезает в char
Нет, он по дефолту там запускается
Возьми десятый кланг у себя на убунте и используй char8_t и -std=c++20
Надеюсь там сделали char8_t
Только char8_t и u8string не получится просто так вывести в консоль все равно
Кириллица влезает в чар только в региональных кодировках, скажем 1251 или 866
Как же все сложно в С++
В нем Ц 2 байта ж
char8_t должен вмещать любой utf-8 символ же
std::wcout << L'Ц'
cpp code: std::cout << sizeof(char8_t); output: 1
Не символ, а кодпоинт вроде
std::cout << "Ц";
Гениально же?
Обсуждают сегодня