我试过实现这样的功能,但不幸的是它不起作用:
const wchar_t *GetWC(const char *c)
{
const size_t cSize = strlen(c)+1;
wchar_t wc[cSize];
mbstowcs (wc, c, cSize);
return wc;
}
我这里的主要目标是能够在Unicode应用程序中集成普通的char字符串。大家可以提供的任何建议都将不胜感激。
最佳答案
使用std::wstring
而不是C99可变长度数组。当前标准保证了std::basic_string
的连续缓冲区。例如。,
std::wstring wc( cSize, L'#' );
mbstowcs( &wc[0], c, cSize );
C++不支持C99可变长度数组,因此,如果将代码编译为纯C++,则甚至无法编译。
进行此更改后,您的函数返回类型也应为
std::wstring
。请记住在
main
中设置相关的语言环境。例如
setlocale( LC_ALL, "" )
。干杯,……