CString和string如何转换
时间: 2024-09-18 12:14:49 浏览: 18
CString和string都是C++编程语言中用于处理字符串的不同数据类型。CString是Microsoft Visual Studio中MFC库(Microsoft Foundation Classes)的一部分,它是一个宽字符字符串类型。而std::string是C++标准库里的窄字符字符串。
转换它们之间通常需要包含相应的头文件:
1. 如果是从CString到std::string,可以使用`std::string(str)`构造函数,因为CString通常有一个公开的成员函数`c_str()`返回const char*,然后传递给std::string:
```cpp
CString strC;
// ...填充strC
std::string strS = strC.c_str();
```
2. 要从std::string到CString,可以先将std::string转换为const wchar_t*,然后创建一个新的CString:
```cpp
std::string strStd;
// ...填充strStd
LPCTSTR strWC = strStd.c_str(); // 或者使用wstring_convert
CString strC = strWC;
```
相关问题
CString 转换 String
在 MFC 中,可以使用 `CString` 类型的 `GetString()` 方法将其转换为 `const char*`,然后使用 `std::string` 的构造函数将其转换为 `std::string` 类型。
示例代码:
```cpp
CString cs = _T("Hello, World!");
const char* pszStr = cs.GetString();
std::string str(pszStr);
```
另外,也可以使用 ATL 中的 `CT2CA` 函数将 `CString` 转换为 `const char*`,然后再使用 `std::string` 的构造函数将其转换为 `std::string` 类型。
示例代码:
```cpp
#include <atlconv.h>
CString cs = _T("Hello, World!");
const char* pszStr = CT2CA(cs);
std::string str(pszStr);
```
CSTRING 转string
在C++中,可以使用C++标准库中的string类来进行字符串的操作。如果你想将C-style字符串(CSTRING)转换为string对象,可以使用string类的构造函数或者赋值运算符来实现。
方法一:使用构造函数
可以使用string类的构造函数将C-style字符串转换为string对象。构造函数接受一个C-style字符串作为参数,并将其转换为string对象。
示例代码如下:
```cpp
#include <iostream>
#include <string>
int main() {
const char* cstr = "Hello, World!";
std::string str(cstr); // 使用构造函数将C-style字符串转换为string对象
std::cout << str << std::endl; // 输出:Hello, World!
return 0;
}
```
方法二:使用赋值运算符
也可以先创建一个空的string对象,然后使用赋值运算符将C-style字符串赋值给该对象。
示例代码如下:
```cpp
#include <iostream>
#include <string>
int main() {
const char* cstr = "Hello, World!";
std::string str; // 创建一个空的string对象
str = cstr; // 使用赋值运算符将C-style字符串赋值给string对象
std::cout << str << std::endl; // 输出:Hello, World!
return 0;
}
```
以上两种方法都可以将C-style字符串转换为string对象。需要注意的是,C-style字符串必须以空字符('\0')结尾,否则可能会导致未定义的行为。