unicode cstring转string
时间: 2023-10-14 09:07:55 浏览: 91
您可以使用以下代码将Unicode C字符串转换为string:
```cpp
#include <iostream>
#include <string>
std::string unicodeCStringToString(const wchar_t* unicodeCStr) {
std::wstring wstr(unicodeCStr);
std::string str(wstr.begin(), wstr.end());
return str;
}
int main() {
const wchar_t* unicodeCStr = L"Hello, 你好!";
std::string str = unicodeCStringToString(unicodeCStr);
std::cout << str << std::endl; // 输出:Hello, 你好!
return 0;
}
```
相关问题
CString 转 string
可以使用以下代码将 CString 转换为 std::string:
```c++
CString cs = _T("Hello World");
std::string str((LPCTSTR)cs);
```
其中,LPCTSTR 是一个宏定义,用于将 CString 转换为 const TCHAR* 类型。在使用该宏定义时,需要确保项目的字符集设置为“使用多字节字符集”。如果项目的字符集设置为“使用 Unicode 字符集”,则需要将 LPCTSTR 替换为 LPCWSTR。
CString 转 STRING
在 MFC(Microsoft Foundation Classes)的 C++ 编程环境中,`CString` 类型本身已经是字符串类型,它内部已经是以 Unicode 字符串的形式存储数据。当你想从一个 `CString` 变量直接复制到另一个字符串变量(`TCHAR*` 或 `LPCTSTR`),可以简单地使用成员函数 `CopyTo()` 或 `c_str()`。
例如,如果你想把一个 `CString` 转换成 `TCHAR*` 类型的字符串,可以这样做:
```cpp
CString strOriginal = "Hello, MFC!";
TCHAR* strDestination = new TCHAR[wcslen(strOriginal) + 1]; // 估计需要的内存大小
strOriginal.CopyTo(strDestination); // 复制字符串内容
strDestination[wcslen(strOriginal)] = _T('\0'); // 添加 null 结尾
// 现在,strDestination 指向的是原始字符串的一个副本
// 使用完后记得删除分配的内存
delete[] strDestination;
```
或者直接获取它的 `c_str()`,这通常用于标准C风格的字符串操作:
```cpp
TCHAR* cStr = strOriginal.c_str();
// 然后可以像处理普通 C 风格字符串一样使用 cStr
```
注意 `c_str()` 返回的是 `const TCHAR*`,这意味着你需要确保不会修改原始的 `CString` 内容。
阅读全文