"C++必知必会.pdf"
在C++编程中,类型转换是至关重要的,它允许我们根据需要在不同数据类型之间进行操作。以下是对C++中类型转换的一些关键点的总结:
1. 转换成字符串
- 针对非COM数据类型,最常用的通用方法是使用`sprintf`函数。例如:
```cpp
char buffer[200];
char c = '1';
int i = 35;
long j = 1000;
float f = 1.7320534f;
sprintf(buffer, "%c", c);
sprintf(buffer, "%d", i);
sprintf(buffer, "%d", j);
sprintf(buffer, "%f", f);
```
- 对于短整型(int),可以使用`itoa`函数按十进制或二进制转换:
```cpp
int i = 35;
itoa(i, temp, 10); // 十进制转换
itoa(i, temp, 2); // 二进制转换
```
- 对于长整型(long),使用`ltoa`函数:
```cpp
long l = 1000;
ltoa(l, temp, 10);
```
- 浮点数(float, double)转换:
```cpp
double source = 3.1415926535;
int decimal, sign;
char* buffer;
buffer = _fcvt(source, 7, &decimal, &sign);
```
- 对于`CString`变量,可以直接强制类型转换:
```cpp
str = "2008北京奥运";
buf = (LPSTR)(LPCTSTR)str;
```
- `BSTR`变量转换:
```cpp
BSTR bstrValue = ::SysAllocString(L"程序员");
char* buf = _com_util::ConvertBSTRToString(bstrValue);
SysFreeString(bstrValue);
```
- 或者使用`wcstombs`:
```cpp
wchar_t* Filename = L"某文件名";
char szFileName[len];
size_t size = wcstombs(szFileName, Filename, len);
```
- `CComBSTR`变量转换:
```cpp
CComBSTR bstrVar("test");
char* buf = _com_util::ConvertBSTRToString(bstrVar.m_str);
```
- 使用`CString`的`Format`成员函数:
```cpp
int i = 123;
str.Format("%d", i);
```
2. 字符串转换成其他类型
- 从字符串转换到短整型(int)使用`atoi`:
```cpp
char* temp = "123";
int i = atoi(temp);
```
- 转换成长整型(long)使用`atol`:
```cpp
long l = atol(temp);
```
以上总结了C++中将不同类型转换为字符串以及从字符串转换回各种数值类型的基本方法。这些转换在处理用户输入、格式化输出、数据存储和解析等多种场景中都非常常见。理解和熟练运用这些转换技巧对于C++程序员来说是必不可少的。