小编lil*_*boo的帖子

在c ++中将UTF8字符串转换为UTF16字符串

我正在使用VC 6.0.我的项目是用Unicode编译的.我正在使用zlib 1.1.3来扩展包含我的UTF-8字符串的文件.我在ASCII中得到它,但我保证它全部用英语,所以我可以将它作为UTF8字符串(我可以吗?).

我在Codeproject中使用了建议的函数,如下所示:

WCHAR* SMUUTF8toUTF16(LPCSTR utf8, int* pLen)
{
    WCHAR *ptr = NULL;
    *pLen = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
    if (*pLen>1)
    {
        ptr = (WCHAR*)malloc(*pLen);

        if (ptr)
        {
            MultiByteToWideChar(CP_UTF8, 0, utf8, -1, ptr, *pLen);
        }
    }

    return ptr;
}
Run Code Online (Sandbox Code Playgroud)

我的代码因这些错误而变得不稳定:1.检测到严重错误c0000374 2. w3wp.exe(NTDLL.DLL)中的第一次机会异常:0xC0000005:访问冲突.

我怀疑有内存泄漏或错误的指针被引用,因为在使用此函数时,我得到了很多上述错误.我的测试还表明,当我不使用它时,堆保持良好的形状而不会被破坏.

你能否建议更好地实现这个问题?

c++ windows zlib visual-c++

1
推荐指数
1
解决办法
353
查看次数

标签 统计

c++ ×1

visual-c++ ×1

windows ×1

zlib ×1