C++ Builder 6 操作unicode

#define _countof(array) (sizeof(array) / sizeof(array[0]))
void __fastcall TForm1::btn1Click(TObject *Sender)
{
    wchar_t  buf[] = L"中国人民解放军";
    WideString ws = "中国人民解放军";
    WCHAR* buf2 = ws.c_bstr();
    int a = _countof(buf);
    int b = sizeof(buf);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn2Click(TObject *Sender)
{
    char* buffer = "中国人民解放军";
    int cbMultiByte = strlen(buffer) + 1;
    wchar_t wbuffer[20] = {0};
    int cchWideChar = cbMultiByte;
    MultiByteToWideChar(
        CP_ACP,
        MB_PRECOMPOSED,
        buffer,
        strlen(buffer) + 1,
        wbuffer,
        strlen(buffer) + 1
    );

    ShowMessage(wbuffer);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn3Click(TObject *Sender)
{
    wchar_t* wbuffer = L"中国人民志愿军";
    int cchWideChar = wcslen(wbuffer) + 1;
    char buffer[20] = {0};
    int cbMultiByte = cchWideChar * sizeof(wchar_t) + 1;

    WideCharToMultiByte(CP_ACP,
        0,
        wbuffer,
        cchWideChar,
        buffer,
        cbMultiByte,
        NULL,
        NULL);


    DWORD err = GetLastError();
    AnsiString errMsg = SysErrorMessage(err);

    ShowMessage(buffer);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn4Click(TObject *Sender)
{
    wchar_t* wbuffer = L"中国人民解放军第301医院";
    PVOID pvBuffer = wbuffer;
    int cb = (wcslen(wbuffer) + 1) * sizeof(wchar_t);
    BOOL bRet = IsTextUnicode(pvBuffer , cb , NULL);

    char* buffer = "中国人民解放军第309医院";
    pvBuffer = buffer;
    cb = (strlen(buffer) + 1) * sizeof(char);
    bRet = IsTextUnicode(pvBuffer , cb , NULL);
}
原文地址:https://www.cnblogs.com/songr/p/15063528.html