Я стараюсь писать символы кириллицы в электронную таблицу, которая создается в приложении OSX:
sheet = xlBookAddSheet(book, "Output", 0);
detailFormat = xlBookAddFormat(book, 0);
wchar_t *w_user = (wchar_t*)malloc(max_chars * sizeof(wchar_t));
//get wchar_t characters...
xlSheetWriteStr(sheet, row, column, w_user, detailFormat);
но последняя строка не скомпилируется как xlSheetWriteStr
ожидает const char*
вместо w_user.
Согласно документы Я должен быть в состоянии пройти в const wchar_t*
, Есть ли способ записать мои международные символы в ячейку?
LibXL предоставляет заголовки для ANSI
а также UNICODE
версии функций.
Программы, желающие использовать Unicode-версию API, должны определить UNICODE
макро. Если вы используете Visual Studio, это так же просто, как Project -> Properties -> Character Set
и установите его Use Unicode Character Set
,
Что вы видите как xlSheetWriteStr
на самом деле макрос, который в конечном итоге имеет значение xlSheetWriteStrA
или же xlSheetWriteStrW
, Если UNICODE
не определено первое, если это де позже.
Функция xlSheetWriteStrA
объявлен в SheetA.h
, в то время как xlSheetWriteStrW
объявлен в SheetW.h
,
Замечания: Лучше, если вы будете последовательны. Если вы используете Unicode-версию функции, используйте Unicode-версию всех функций. Я говорю это, потому что в вашем примере я вижу, что вы используете версию ANSI xlBookAddSheet
,
Обновить: Для версии библиотеки OSX макрос _UNICODE
, с предыдущим подчеркиванием (подробности см. в libxl.h).
Других решений пока нет …