CString 转std::string
时间: 2023-12-13 13:32:16 浏览: 417
以下是两种将CString转换为std::string的方法:
1.使用MFC的CString的GetString()函数和std::string的构造函数
```cpp
CString c_name = "convert";
std::string str = c_name.GetString();
```
2.使用ATL的CW2A宏和CString的GetString()函数
```cpp
CString c_name = _T("convert");
std::string str = CW2A(c_name.GetString());
```
相关问题
CString 转 std::string
要将CString转换为std::string,有几种方法可以实现。以下是其中的三种方法:
1.使用CString的GetString()函数和std::string的构造函数,将CString转换为LPCTSTR,然后将LPCTSTR转换为std::string。例如:
CString c_name = "convert";
std::string str = c_name.GetString();
2.使用CString的GetString()函数和ATL的CW2A()函数,将CString转换为char*,然后将char*转换为std::string。例如:
CString c_name = _T("convert");
std::string str = CW2A(c_name.GetString());
3.使用CString的GetBuffer()函数和std::string的构造函数,将CString转换为char*,然后将char*转换为std::string。例如:
CString strCS("HelloWorld");
std::string strS;
strS = strCS.GetBuffer(0);
要将CString转换为std::string,有几种方法可以实现。以下是其中的三种方法:
1.使用CString的GetString()函数和std::string的构造函数,将CString转换为LPCTSTR,然后将LPCTSTR转换为std::string。例如:
CString c_name = "convert";
std::string str = c_name.GetString();
2.使用CString的GetString()函数和ATL的CW2A()函数,将CString转换为char*,然后将char*转换为std::string。例如:
CString c_name = _T("convert");
std::string str = CW2A(c_name.GetString());
3.使用CString的GetBuffer()函数和std::string的构造函数,将CString转换为char*,然后将char*转换为std::string。例如:
CString strCS("HelloWorld");
std::string strS;
strS = strCS.GetBuffer(0);
Cstring转std::string
在C++中,如果你有一个MFC库中的`CString`对象,想要将其转换成标准库中的`std::string`,可以使用`A2CT`宏或者手动进行字符复制。下面是两种方法:
1. 使用`A2CT`宏:
```cpp
#include <atlconv.h>
std::string strFromCStr(CString cs);
strFromCStr = A2CT(cs);
```
`A2CT`宏会将宽字符转换成ASCII格式,并存储到新的`std::string`中。
2. 手动复制字符:
```cpp
std::string strFromCStr(CString cs);
strFromCStr.resize(cs.GetLength());
cs.GetBuffer((LPSTR)&strFromCStr[0]);
strFromCStr.ReleaseBuffer();
```
这种方法首先分配足够的空间给新的`std::string`,然后从`CString`的缓冲区复制字符,最后释放缓冲区。
注意:以上代码示例假设`CString`是一个宽字符字符串(如UTF-16),如果是其他编码,可能需要相应调整。
阅读全文
相关推荐















