MFC CString 转成string
时间: 2024-10-20 11:15:37 浏览: 21
在MFC中,当你有一个`CString`类型的变量,想要转换成C++标准库中的`std::string`类型,可以使用`CString`类提供的`GetString()`成员函数,然后再通过`AtlConvertToUtf8()`或者`WideCharToMultiByte()`进行转换。这里是一个简单的示例:
```cpp
#include "afxwin.h"
#include <atlconv.h>
std::string ConvertCStringToString(const CString& cStr)
{
// 使用GetString获取宽字符版本
std::wstring wideStr = cStr.GetString();
// AtlConvertToUtf8将宽字符转换为UTF-8编码的字符串
std::string utf8Str;
size_t len;
if (::AtlConvertToUtf8(utf8Str, &len, wideStr.c_str(), CP_UTF8) == S_OK)
{
// 完整的utf8字符串,包括结束标志'\0'
utf8Str.resize(len);
}
return utf8Str;
}
int main()
{
CString cStr("你好,MFC!");
std::string strConverted = ConvertCStringToString(cStr);
AFX_TRACE(strConverted); // 输出:"你好,MFC!"
return 0;
}
```
请注意,`AtlConvertToUtf8`通常用于从Windows API风格的字符串(如宽字符)转换到UTF-8,如果直接使用`cStr.GetString().c_str()`可能会得到非兼容的编码。
阅读全文