mfc CString 转 std string
时间: 2023-11-18 18:02:57 浏览: 60
可以使用以下代码将 MFC 的 CString 转换为 std::string:
```c++
CString cstr = "Hello, World!";
std::string str(CW2A(cstr.GetString()));
```
其中,`CW2A` 是一个 MFC 宏,用于将 Unicode 字符串转换为 ANSI 字符串。`cstr.GetString()` 返回 CString 对象的内部字符数组。
相关问题
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()`可能会得到非兼容的编码。
MFC CString 转成std::string
MFC(Microsoft Foundation Classes)是微软为其Windows应用程序提供的一个C++类库,其中的CString是一个字符字符串类。如果你想要将MFC的CString转换为C++标准库中的std::string,可以按照以下步骤操作:
1. 首先,确保包含必要的头文件:
```cpp
#include "afxstrings.h" // 如果是在MFC项目中,包含了CString类
#include <string>
```
2. 使用`AfxToWideChar()`函数将宽字符版本的CString转换为宽字符串(wchar_t*),因为CStrings默认存储为宽字符:
```cpp
std::wstring wideString = AfxToWStr(cstr); // cstr是你需要转换的 CString实例
```
这里假设cstr是一个有效的MFC CString。
3. 然后,你可以将宽字符串转换为std::wstring:
```cpp
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
std::string utf8String = converter.to_bytes(wideString);
```
4. 最后,如果需要std::string而不是std::wstring,可以进一步将其转换:
```cpp
std::string finalString(utf8String.begin(), utf8String.end());
```
阅读全文