MFC如何实现从CString转化为string格式·
时间: 2024-02-29 15:52:21 浏览: 152
可以使用CString的GetString()方法将CString转换为char*类型,然后再通过string的构造函数将其转换为string类型。具体代码如下:
```
CString cstr = _T("Hello, world!");
string str((LPCTSTR)cstr.GetString());
```
注意,在使用CString的GetString()方法时,需要将CString对象转换为LPCTSTR类型。
相关问题
MFC如何实现从CString转化为string格式
可以使用CString的GetString()方法将CString转换为char*类型,然后再通过string的构造函数将其转换为string类型。具体代码如下:
```
CString cstr = _T("Hello, world!");
string str((LPCTSTR)cstr.GetString());
```
注意,在使用CString的GetString()方法时,需要将CString对象转换为LPCTSTR类型。
MFC CString 转成string
在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()`可能会得到非兼容的编码。
阅读全文