如何正确将 char 转换为 wchar_t 以进行 Unicode 集成
将 char 字符串转换为 wchar_t 对于将普通字符串集成到 Unicode 应用程序中至关重要。一种常见的方法是通过 mbstowcs() 函数。
原始尝试:
以下代码可能看起来像是一个简单的实现,但不幸的是产生了意想不到的结果:
<code class="c++">const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t wc[cSize]; mbstowcs (wc, c, cSize); return wc; }</code>
深入探究:
问题在于将 wc 声明为局部变量。函数返回后,wc 被释放,函数的指针指向垃圾内存。
解决方案:
为了解决这个问题,我们动态地为 wc 分配内存并返回一个指向它的指针。下面修改后的代码演示了这一点:
<code class="c++">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; }</code>
警告:
需要注意的是,调用代码现在负责释放动态分配的内存以防止内存占用泄漏。
以上是为什么尝试使用 mbstowcs() 将 char 转换为 wchar_t 会导致意外结果?的详细内容。更多信息请关注PHP中文网其他相关文章!