c++ - 如何将 char* 转换为 wchar_t*?

标签 c++ winapi unicode mingw type-conversion

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

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/

相关文章:

python - 我应该默认使用 Unicode 字符串吗?

c++ - 创建相互依赖类的实例 C++11

c++ - 如何处理 std::thread 中的 PostMessage 线程消息?

unicode - 检查字体是否支持某些字符

winapi - msdn CM_GET_Parent 示例不起作用

winapi - Win32 : Write to file without buffering?

vim - 如何正确设置 vim 以进行 utf-8 编辑

c++ - R 和 C++ 迭代

c++ - cpp dll char指针分配,写入内存访问冲突

c++ - 如何使用带有垃圾字符的 substr 获取字符串?