我尝试过实现这样的功能,但不幸的是它不起作用:
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 应用程序中。非常感谢你们提供的任何建议。
最佳答案
在您的示例中, wc
是一个局部变量,将在函数调用结束时释放。这会将您置于未定义的行为领域。
简单的解决方法是这样的:
const wchar_t *GetWC(const char *c)
{
const size_t cSize = strlen(c)+1;
wchar_t* wc = new wchar_t[cSize];
mbstowcs (wc, c, cSize);
return wc;
}
请注意,调用代码将不得不释放此内存,否则您将发生内存泄漏。
关于c++ - 如何将 char* 转换为 wchar_t*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032080/