VS2010 CString转string
时间: 2024-08-17 07:02:36 浏览: 47
Visual Studio 2010 中的 CString 类型是 MFC(Microsoft Foundation Classes)的一部分,主要用于处理宽字符字符串,而 C++ 标准库中的 string 类型通常用于窄字符字符串。如果你需要将 CString 转换为 std::string,你可以使用以下方法:
```cpp
#include "afxwin.h" // 包含 CString 类
std::string strFromCString(CString csstr)
{
return csstr.GetString(); // 使用 GetString() 函数获取宽字符字符串内容,并转换为 std::string
}
```
在这个例子中,`GetString()` 函数会将 CString 对象的内容复制到一个新的 std::string 中。然后你可以像操作普通字符串一样对结果进行处理。
相关问题
CString 转 STRING
在 MFC(Microsoft Foundation Classes)的 C++ 编程环境中,`CString` 类型本身已经是字符串类型,它内部已经是以 Unicode 字符串的形式存储数据。当你想从一个 `CString` 变量直接复制到另一个字符串变量(`TCHAR*` 或 `LPCTSTR`),可以简单地使用成员函数 `CopyTo()` 或 `c_str()`。
例如,如果你想把一个 `CString` 转换成 `TCHAR*` 类型的字符串,可以这样做:
```cpp
CString strOriginal = "Hello, MFC!";
TCHAR* strDestination = new TCHAR[wcslen(strOriginal) + 1]; // 估计需要的内存大小
strOriginal.CopyTo(strDestination); // 复制字符串内容
strDestination[wcslen(strOriginal)] = _T('\0'); // 添加 null 结尾
// 现在,strDestination 指向的是原始字符串的一个副本
// 使用完后记得删除分配的内存
delete[] strDestination;
```
或者直接获取它的 `c_str()`,这通常用于标准C风格的字符串操作:
```cpp
TCHAR* cStr = strOriginal.c_str();
// 然后可以像处理普通 C 风格字符串一样使用 cStr
```
注意 `c_str()` 返回的是 `const TCHAR*`,这意味着你需要确保不会修改原始的 `CString` 内容。
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')结尾,否则可能会导致未定义的行为。
阅读全文