|  | 
 
| VC++在UNICODE下,const char*转CString 在VC++中,如果你想将  `const char*`  转换为  `CString` ,可以使用  `CString`  的构造函数,结合字符集的转换。在Unicode下, `CString`  实际上是  `CStringW` ,所以需要将  `const char*`  转换为宽字符字符串  `wchar_t*` 。可以使用  `MultiByteToWideChar`  函数进行转换。以下是一个示例代码,演示如何完成这个转换:
 ### 示例代码
 
 复制代码#include <afx.h>
#include <iostream>
#include <windows.h>
 CString ConvertCharToCString(const char* charStr) {
    // 获取原始字符串的长度
    int length = static_cast<int>(strlen(charStr));
     // 计算转换所需的宽字符缓冲区大小
    int wideCharSize = MultiByteToWideChar(CP_ACP, 0, charStr, length, NULL, 0);
     // 分配宽字符缓冲区
    wchar_t* wideCharStr = new wchar_t[wideCharSize + 1]; // +1用于结束符
     // 执行转换
    MultiByteToWideChar(CP_ACP, 0, charStr, length, wideCharStr, wideCharSize);
    wideCharStr[wideCharSize] = L'\0'; // 添加结束符
     // 创建CString对象
    CString cString(wideCharStr);
     // 释放分配的内存
    delete[] wideCharStr;
     return cString;
}
 int main() {
    const char* charStr = "Hello, World!";
     // 转换为CString
    CString cString = ConvertCharToCString(charStr);
     // 输出结果
    std::wcout << L"转换后的CString: " << cString.GetString() << std::endl;
     return 0;
}
 ### 代码说明
 1. **函数  `ConvertCharToCString` **:
 - 接收一个  `const char*`  类型的参数。
 - 使用  `strlen`  获取字符串的长度。
 - 使用  `MultiByteToWideChar`  计算转换所需的宽字符缓冲区大小。
 - 分配一个宽字符数组以存储转换后的字符串。
 - 再次调用  `MultiByteToWideChar`  进行实际的字符转换,并在末尾添加字符串结束符。
 - 创建  `CString`  对象并返回。
 2. ** `main`  函数**:
 - 创建一个  `const char*`  类型的字符串。
 - 调用  `ConvertCharToCString`  函数进行转换。
 - 使用  `std::wcout`  输出转换后的  `CString` 。
 ### 注意事项
 - 确保在项目中正确配置了 MFC 库,并使用 Unicode 编码。
 - 处理完字符串后,记得释放分配的内存,以避免内存泄漏。
 
 
 | 
 |