C++ char*转CString
时间: 2024-12-26 12:30:49 浏览: 82
在C++中,将`char*`转换成`CString`通常是在使用MFC(Microsoft Foundation Classes)或者ATL(Active Template Library)等Windows API相关的库时,因为它们提供了一些特定的数据类型来处理字符串。下面是基本的步骤:
1. 如果你在MFC中,可以使用`LPCTSTR`(通常是`LPCSTR`或`LPWSTR`,取决于字符编码),它是CStrings的一个派生类型,可以直接从`char*`构造:
```cpp
TCHAR* szTemp = _tcscpy(new TCHAR[wcslen(str)], str);
CString csStr(szTemp);
delete[] szTemp;
```
这里 `_tcscpy` 函数用于复制宽字符串,`wcslen` 获取原始字符串长度。
2. 如果使用C++11及以上版本,你可以利用`std::wstring_convert`和`std::codecvt_utf8_utf16`来进行转换:
```cpp
#include <locale>
#include <codecvt>
#include <string>
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> cvt;
std::wstring wstr = cvt.from_bytes(std::string(str));
CString csStr(wstr.c_str());
```
这里先将UTF-8编码的`char*`转换成了`wstring`,然后转换为`CString`。
注意:`CString`通常用于处理Unicode字符串,而`char*`默认可能是单字节编码,所以在转换之前需要确保它们编码一致。
阅读全文
相关推荐


















