unicode下CString转化为std::string
时间: 2024-09-09 11:02:23 浏览: 45
在Unicode环境下,将Windows API中的`CString`转换为C++标准库的`std::string`,通常需要借助一些库函数的帮助,因为它们的数据结构和内存管理方式不同。在MFC(Microsoft Foundation Classes)框架中,可以这样做:
```cpp
#include <atlbase.h>
#include <atlconv.h>
#include <string>
std::wstring wideStrFromCString(const CString& cStr) {
return cStr.GetStringW(); // 获取宽字符版本的字符串
}
std::string utf8StrFromWideString(const std::wstring& wStr) {
CP_UTF8 cpUTF8; // 初始化转换编码
return MultiByteToWideChar(CP_UTF8, 0, reinterpret_cast<LPCSTR>(wStr.c_str()), -1,
NULL, 0); // 转换宽字符到UTF-8
}
std::string cStringToStdString(const CString& cStr) {
std::wstring wStr = wideStrFromCString(cStr);
return utf8StrFromWideString(wStr);
}
```
首先,从`CString`获取宽字符版的字符串,然后将其转换成`std::wstring`,最后通过`MultiByteToWideChar`函数将宽字符转换为UTF-8格式的`std::string`。
阅读全文