我想将西里尔字符写入在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。
根据docs,我应该可以传递const wchar_t*
。有没有办法将我的国际角色写入单元格?
答案 0 :(得分:1)
LibXL为函数的ANSI
和UNICODE
版本提供标题。
愿意使用API的unicode版本的程序应该定义UNICODE
宏。如果您使用的是Visual Studio,只需转到Project -> Properties -> Character Set
并将其设置为Use Unicode Character Set
即可。
您看到的xlSheetWriteStr
实际上是一个最终具有值xlSheetWriteStrA
或xlSheetWriteStrW
的宏。如果UNICODE
没有定义前者,如果是晚些时候。
函数xlSheetWriteStrA
在SheetA.h
中声明,而xlSheetWriteStrW
在SheetW.h
中声明。
注意:如果您保持一致,那就更好了。如果使用函数的unicode版本,请使用所有函数的unicode版本。我这样说是因为在你的例子中我看到你使用的是xlBookAddSheet
的ansi版本。
更新:对于OSX版本的库,宏是 _UNICODE
,带有前面的下划线(有关详细信息,请参阅libxl.h)。