无法将 wchar_t 传递给 LibXL writeStr
Can't pass wchar_t to LibXL writeStr
我正在尝试将西里尔字符写入在 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*
。有什么方法可以将我的国际字符写入单元格吗?
LibXL 为 ANSI
和 UNICODE
版本的函数提供 headers。
愿意使用 API 的 unicode 版本的程序应该定义 UNICODE
宏。如果您使用的是 Visual Studio,只需转到 Project -> Properties -> Character Set
并将其设置为 Use Unicode Character Set
。
您看到的 xlSheetWriteStr
实际上是一个最终具有值 xlSheetWriteStrA
或 xlSheetWriteStrW
的宏。如果UNICODE
前者没有定义,如果是de则后者.
函数 xlSheetWriteStrA
在 SheetA.h
中声明,而 xlSheetWriteStrW
在 SheetW.h
中声明。
注意:要一致就更好了。如果您使用函数的 unicode 版本,请使用所有函数的 unicode 版本。我这样说是因为在你的例子中我看到你使用的是 xlBookAddSheet
.
的 ansi 版本
更新: 对于库的 OSX 版本,宏是 _UNICODE
,前面有下划线(详见libxl.h)。
我正在尝试将西里尔字符写入在 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*
。有什么方法可以将我的国际字符写入单元格吗?
LibXL 为 ANSI
和 UNICODE
版本的函数提供 headers。
愿意使用 API 的 unicode 版本的程序应该定义 UNICODE
宏。如果您使用的是 Visual Studio,只需转到 Project -> Properties -> Character Set
并将其设置为 Use Unicode Character Set
。
您看到的 xlSheetWriteStr
实际上是一个最终具有值 xlSheetWriteStrA
或 xlSheetWriteStrW
的宏。如果UNICODE
前者没有定义,如果是de则后者.
函数 xlSheetWriteStrA
在 SheetA.h
中声明,而 xlSheetWriteStrW
在 SheetW.h
中声明。
注意:要一致就更好了。如果您使用函数的 unicode 版本,请使用所有函数的 unicode 版本。我这样说是因为在你的例子中我看到你使用的是 xlBookAddSheet
.
更新: 对于库的 OSX 版本,宏是 _UNICODE
,前面有下划线(详见libxl.h)。