@romangostilo

Как поместить русский символ в переменную wchar_t в Xcode?

Суть такая: вся группа в вузе работает на Windows, а я на macOS, преподаватель скинул лабораторную работу .cpp в кодировке ANSI, которой, как я понял, нет в macOS. И одна строчка кода постоянно кричит ошибку
wchar_t cw = L'Ф'; // illegal character encoding in character literal

Пробовал конвертировать файл в UTF-8, Cyrillic (Windows) и Cyrillic (macOS). Ничего не вышло.
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
Никак, этот пример кода рассчитан на Windows. В Windows используется кодировка UTF-16, для которой в C под Windows используется wchar, и кириллический символ можно указать как отдельный wchar. Но такое пройдет не со всеми символами Unicode, т.к. некоторые требуют более 1 wchar и делать так не надо. В общем случае для UTF-кодировок не возможно запихнуть 1 символ в одну переменную, даже для хранения одного символа нужна строка, поэтому это пример плохого, не универсального кода. L для указания не-ASCII констант это специфика IDE и компиляторов для Windows (в основном Visual Studio).

MacOS сейчас использует в основном кодировку UTF-8 и кириллический символ не влазит в 1 октет UTF-16. В C нет способа представить отдельный символ UTF-8 в общем случае, т.к. он так же может иметь переменную длину, кириллический символ можно представить в виде 2х символов char, их можно хранить как строку. Засунуть их в 1 16-битную переменную можно, но не нужно, т.к. в UTF-8 символы могут занимать 1,2,3,4 октета (и потенциально больше) и использование не-8битных типов для UTF-8 нецелесообразно. Вам следует переписать код с учетом специфики UTF кодировок и использовать строку даже для хранения отдельного символа. Такой код потенциально можно сделать кросс-платформенным.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
maaGames
@maaGames
Погроммирую программы
конвертируй файл из ANSI в UTF-8. Есть онлайн конвертеры.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 нояб. 2020, в 01:53
5000 руб./за проект
01 нояб. 2020, в 00:04
50000 руб./за проект
31 окт. 2020, в 23:12
10000 руб./за проект