
CString与char、string、int转换教程

本文主要介绍了在Microsoft Foundation Class (MFC) 库中如何进行字符串类型之间的转换,包括`CString`、`char *`和`std::string`之间的转换,以及`CString`与`int`之间的转换方法。
在MFC中,`CString`是一个方便的字符串类,它提供了许多操作字符串的功能。以下是一些转换方法:
1. `CString` 转 `char *`:
```cpp
CString cstr;
char* p = (LPSTR)(LPCTSTR)cstr;
```
这里通过类型转换将`CString`对象转换为`char *`指针,但需要注意,这种转换是临时的,不适用于修改原始`CString`内容的情况。
2. `string` 转 `CString`:
```cpp
std::string str;
CString cstr;
cstr.Format("%s", str.c_str());
```
使用`Format`函数,传入`std::string`的`c_str()`返回的C风格字符串来创建`CString`。
3. `char` 转 `CString`:
```cpp
char ch;
CString cstr;
cstr.Format("%s", &ch);
```
类似地,对于单个`char`,也可以通过`Format`函数将其转换为`CString`。
4. `char *` 转 `string`:
```cpp
char* p;
std::string str(p);
```
在初始化`std::string`时,可以直接传入`char *`指针。
5. `string` 转 `char *`:
```cpp
std::string str;
char* p = str.c_str();
```
`std::string`的`c_str()`方法返回一个带有终止符`'\0'`的C风格字符串。
6. `CString` 转 `string`:
```cpp
CString cstr;
std::string str(cstr.GetBuffer());
// 记得释放缓冲区
cstr.ReleaseBuffer();
```
使用`GetBuffer()`获取内部缓冲区,然后构造`std::string`,但记得在使用后调用`ReleaseBuffer()`释放。
7. `CString` 与 `int` 之间的转换:
- `int` 转 `CString`:
```cpp
int i = 64;
CString s;
s.Format("%d", i);
```
使用`Format`函数将整数转换为`CString`。
- `CString` 转 `int`:
```cpp
CString s;
int i = _ttoi(s);
```
可以使用`_ttoi`函数将`CString`转换为`int`。
这些转换在处理不同类型的字符串时非常有用,特别是在MFC应用中。了解这些基本的转换方法可以帮助开发者更灵活地在不同类型的字符串间操作数据。然而,需要注意的是,不正确的转换可能导致内存泄漏或数据损坏,因此在实际使用中务必谨慎。
相关推荐








