Я хотел распечатать изображения игральных карт с помощью Unicode.Использование sprintf с символами Unicode
Фрагмент кода:
void printCard(int card){
char strCard[10];
sprintf(strCard, "\U0001F0A%x", (card%13)+1);
printf("%s\n", cardStr);
}
Поскольку \ U требует 8 шестнадцатеричных символов после него я получаю от компиляции:
error: incomplete universal character name \U0001F0A
Я мог бы создать кучу если/другое заявления и распечатал карту таким образом, но я надеялся, что это не заставит меня явно выписать кодировку Unicode каждой карты.
Используйте 'swprintf' и т. Д. И используйте широкие символы. Сохраните источник как uni-код и префиксные строки с помощью L –
Не можете ли вы просто вычислить точку кода как wchar_t? Тем не менее, я был бы удивлен, если printf напечатал это правильно - в какой среде вы находитесь? – Rup
Какую кодировку Unicode вы используете? Современные редакторы используют UTF8. Обратите внимание, что компилятор должен быть соответствующим образом настроен для ввода кодировки и выходной кодировки. Например, gcc использует utf-8, также по умолчанию для обоих. Однако вы можете изменить оба варианта. Для внутренних символов вам понадобится соответствующий тип (не уверен, что 'wchar_t' является правильным для любой кодировки и для char-массивов (vulgo:« strings »)). – Olaf