MultiByteToWideChar, WideCharToMultiByte

 

MultiByteToWideChar

    const UINT codePage = 936;                              // GB 2312.
    CCHAR *multiByteString = "源字符串abcd";

    // First: get count of multi-byte string.
    const DWORD cCh = MultiByteToWideChar(codePage,         // Character Page.
                                          0,                // Flag, always be 0.
                                          multiByteString,  // Multi-byte string.
                                          -1,               // '-1' is to determind length automatically.
                                          NULL,             // 'NULL' means ignore result. This is based
                                                            // on next argument is '0'.
                                          0);               // '0' is to get the count of character needed 
                                                            // instead of to translate.

    // Second: allocate enough memory to save result in wide character.
    PWCHAR pWideCharString = new WCHAR[cCh];
    ZeroMemory(pWideCharString, cCh * sizeof(pWideCharString[0]));

    // Third: Translate it!
    MultiByteToWideChar(codePage,                           // Character Page.
                        0,                                  // Flag, always be 0.
                        multiByteString,                    // Multi-byte string.
                        -1,                                 // Count of character of string above.
                        pWideCharString,                    // Target wide character buffer.
                        cCh);                               // Count of character of wide character string buffer.

    // Fourth: use it!
    // ...

    // Fifth: deallocate the memory.
    delete pWideCharString;
    pWideCharString = NULL;

 

 

WideCharToMultiByte

    const UINT codePage = 936;                              // GB 2312.
    WCHAR *wideCharString = L"源字符串abcd";

    // First: get count.
    const DWORD cCh = WideCharToMultiByte(codePage,            
                                          0,
                                          wideCharString, 
                                          -1,
                                          NULL,
                                          0,
                                          NULL,             // When the wide character to be traslated
                                                            // is not in code page, proc will use this 
                                                            // variable to fill with. We usually set it
                                                            // to NULL.
                                          NULL);            // This variable will save the number of 
                                                            // character which can't be tranlated. We
                                                            // usually set it to NULL.

    // Second: allocate enough memory to save result.
    PCHAR pMultiByteString = new CHAR[cCh];
    ZeroMemory(pMultiByteString, cCh * sizeof(pMultiByteString[0]));

    // Third: Translate it!
    WideCharToMultiByte(codePage,
                        0,
                        wideCharString,
                        -1,
                        pMultiByteString,
                        cCh,
                        NULL,
                        NULL);

    // Fourth: use it!
    // ...

    // Fifth: deallocate the memory.
    delete pMultiByteString;
    pMultiByteString = NULL;

 

转载于:https://www.cnblogs.com/walfud/archive/2012/07/06/2579487.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值