| 
 | 
 
VC++UNICODE下,CString转为char*,char*转为CString 
在 VC++ 中使用 UNICODE 时, `CString`  类可以方便地处理字符串。以下是如何在 UNICODE 下将  `CString`  转换为  `char*`  和将  `char*`  转换为  `CString`  的代码示例。 
 ### 1. CString 转换为 char* 
 在 UNICODE 下, `CString`  实际上是  `CStringW` ,表示宽字符字符串。要将  `CString`  转换为  `char*` ,需要使用  `WideCharToMultiByte`  函数进行转换。 
 ### 示例代码: 
- #include <afx.h> // 包含 CString 的定义
 
 - #include <Windows.h> // 包含 Windows API 函数
 
 -  void CStringToChar(const CString& str, char* buffer, int bufferSize) {
 
 -     // 将 CString 转换为 char*
 
 -     WideCharToMultiByte(CP_UTF8, 0, str, -1, buffer, bufferSize, NULL, NULL);
 
 - }
 
 -  int main() {
 
 -     CString cstr = _T("Hello, World!"); // 创建一个 CString
 
 -     char charBuffer[256]; // 创建一个 char 数组用于存放转换后的字符串
 
 -      CStringToChar(cstr, charBuffer, sizeof(charBuffer)); // 转换 CString 为 char*
 
 -      // 输出结果
 
 -     printf("Converted CString to char*: %s\n", charBuffer);
 
 -      return 0;
 
 - }
 
  复制代码 
 
### 2. char* 转换为 CString 
 同样地,可以使用  `MultiByteToWideChar`  函数将  `char*`  转换为  `CString` 。 
 ### 示例代码: 
- #include <afx.h> // 包含 CString 的定义
 
 - #include <Windows.h> // 包含 Windows API 函数
 
 -  CString CharToCString(const char* charStr) {
 
 -     CString cstr;
 
 -     int size = MultiByteToWideChar(CP_UTF8, 0, charStr, -1, NULL, 0); // 获取转换所需的大小
 
 -     wchar_t* wideBuffer = new wchar_t[size]; // 创建宽字符数组
 
 -      MultiByteToWideChar(CP_UTF8, 0, charStr, -1, wideBuffer, size); // 转换 char* 为 wchar_t*
 
 -     cstr = wideBuffer; // 将 wchar_t* 转换为 CString
 
 -     delete[] wideBuffer; // 释放内存
 
 -      return cstr;
 
 - }
 
 -  int main() {
 
 -     const char* charStr = "Hello, World!"; // 创建一个 char*
 
 -     CString cstr = CharToCString(charStr); // 转换 char* 为 CString
 
 -      // 输出结果
 
 -     wprintf(L"Converted char* to CString: %s\n", cstr); // 使用 wprintf 输出宽字符字符串
 
 -      return 0;
 
 - }
 
  复制代码 
 
### 代码说明 
 1. **CString 转换为 char***: 
   - 使用  `WideCharToMultiByte`  函数将  `CString`  转换为  `char*` 。该函数的参数包括字符编码、输入字符串、输出缓冲区和其大小。 
 2. **char* 转换为 CString**: 
   - 使用  `MultiByteToWideChar`  函数将  `char*`  转换为宽字符字符串( `wchar_t*` ),然后将其赋值给  `CString`  对象。 
 3. **内存管理**: 
   - 在转换  `char*`  到  `CString`  时,动态分配的内存需要在使用后释放,以避免内存泄漏。 
 ### 注意事项 
- 在使用这些转换函数时,要确保输入字符串的编码格式(如 UTF-8)。 
- 在输出宽字符字符串时,使用  `wprintf`  函数。 
- 在实际应用中,建议使用  `CString`  直接处理字符串,尽量减少手动管理字符数组的需求。 
 
 
 |   
 
 
 
 |