MultiByteToWideChar

来源:互联网 发布:于丹 知乎 编辑:程序博客网 时间:2024/05/21 10:29
#include <Windows.h>#include <wchar.h>#include <string.h>#include <stdio.h>#include <iostream>using std::wcout;using std::endl;int main(){    char sBuf[25] = {0};    strcpy(sBuf, "test");    int nBufSize = strlen(sBuf);    // VC++默认使用ANSI,故取第一个参数为CP_ACP    DWORD dBufSize = MultiByteToWideChar(CP_ACP, 0, sBuf, nBufSize, NULL, 0);    printf("需要wchar_t %u 个\n", dBufSize);    wchar_t* dBuf = new wchar_t[dBufSize];    wmemset(dBuf, 0, dBufSize);    int nRet = MultiByteToWideChar(CP_ACP, 0, sBuf, nBufSize, dBuf, dBufSize);    if(nRet <= 0)    {        printf("转换失败\n");        DWORD dwErr = GetLastError();        switch(dwErr)        {        case ERROR_INSUFFICIENT_BUFFER:            printf("error insufficient buffer\n");            break;        case ERROR_INVALID_FLAGS:            printf("error invalid flags\n");            break;        case ERROR_INVALID_PARAMETER:            printf("error invalid parameter\n");            break;        case ERROR_NO_UNICODE_TRANSLATION:            printf("error no unicode translation\n");            break;        }    }    else    {        printf("转换成功\n");        wcout << dBuf;        printf("\n");        //printf("%s\n", dBuf);    }    delete [] dBuf;    getchar();    return 0;}
原创粉丝点击