char, WCHAR, CString之间的转换

来源:互联网 发布:新手淘宝网卖什么 编辑:程序博客网 时间:2024/05/22 10:59

1. char --> WCHAR

MultiByteToWideChar

int ConvertCharToWChar(char* pMultiByteStr, WCHAR* pWideCharStr, size_t BytesOfWideCharStr){    memset(pWideCharStr, 0, BytesOfWideCharStr);    return MultiByteToWideChar(CP_ACP,0, pMultiByteStr, -1, pWideCharStr, BytesOfWideCharStr / 2 - 1);}

 

2. WCHAR --> char

WideCharToMultiByte

int ConvertWCharToChar(WCHAR* pWideCharStr, char* pMultiByteStr, size_t BytesOfCharStr){    memset(pMultiByteStr, 0, BytesOfCharStr);    return WideCharToMultiByte(CP_ACP, 0, pWideCharStr, -1, pMultiByteStr, BytesOfCharStr - 1, NULL, NULL);}

 

3. CString --> char

void ConvertCStringToChar(CString& source, char* pMultiByteStr, size_t BytesOfCharStr){    memset(pMultiByteStr, 0, BytesOfCharStr);    char* dest = pMultiByteStr;    LPTSTR p = source.GetBuffer();#ifdef UNICODE    WideCharToMultiByte(CP_ACP, 0, p, -1, dest, BytesOfCharStr - 1, NULL, NULL);    dest[BytesOfCharStr - 1] = '\0';#else  /*UNICODE*/    int i = 0;    for (; i < (BytesOfCharStr - 1) && p[i] != 0; i++)    {        dest[i] = p[i];    }    dest[i] = 0;#endif /*UNICODE*/}


 

4. CString --> WCHAR

void ConvertCStringToWChar(CString& source, WCHAR* pWideCharStr, size_t BytesOfWideCharStr){    memset(pWideCharStr, 0, BytesOfWideCharStr);    WCHAR* dest = pWideCharStr;    int length  = BytesOfWideCharStr / 2;    LPTSTR p    = source.GetBuffer();#ifdef UNICODE    int i = 0;    for (; i < (length - 1) && p[i] != 0; i++ )    {        dest[i] = p[i];    }    dest[i] = 0;#else  /*UNICODE*/    MultiByteToWideChar(CP_ACP,0, p, -1, dest, length - 1);    dest[length - 1] = 0;#endif /*UNICODE*/}

 

5. char --> CString


6. WCHAR --> CString

原创粉丝点击