我试过实现这样的功能,但不幸的是它不起作用:

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, "" )

干杯,……

09-03 23:47