C++ TCHAR* 与char* 互转
时间: 2023-08-29 07:05:29 浏览: 112
在使用 TCHAR* 和 char* 之间进行转换时,可以使用以下方法进行处理:
1. 将 TCHAR* 转换为 char*
可以使用 WideCharToMultiByte 函数将 TCHAR* 转换为 char*。该函数接受四个参数:
- CodePage:指定要使用的代码页。
- dwFlags:指定转换选项。
- lpWideCharStr:指向要转换的字符串的指针。
- cchWideChar:指定要转换的字符串的长度(以字符为单位)。
示例代码如下:
```cpp
#include <windows.h>
char* TCHAR2char(const TCHAR* tchar)
{
int size = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);
char* buffer = new char[size];
WideCharToMultiByte(CP_ACP, 0, tchar, -1, buffer, size, NULL, NULL);
return buffer;
}
```
2. 将 char* 转换为 TCHAR*
可以使用 MultiByteToWideChar 函数将 char* 转换为 TCHAR*。该函数接受五个参数:
- CodePage:指定要使用的代码页。
- dwFlags:指定转换选项。
- lpMultiByteStr:指向要转换的字符串的指针。
- cbMultiByte:指定要转换的字符串的长度(以字节为单位)。
- lpWideCharStr:指向接收转换结果的缓冲区的指针。
示例代码如下:
```cpp
#include <windows.h>
TCHAR* char2TCHAR(const char* charStr)
{
int size = MultiByteToWideChar(CP_ACP, 0, charStr, -1, NULL, 0);
TCHAR* buffer = new TCHAR[size];
MultiByteToWideChar(CP_ACP, 0, charStr, -1, buffer, size);
return buffer;
}
```
需要注意的是,在实际使用中,需要在使用完毕后将转换生成的新字符串删除,否则会造成内存泄漏。