本篇文章主要讲解的是C++中的实用技巧和STL(Standard Template Library)在处理字符串转换为数字方面的应用。首先,作者提到了一个常见的错误示例,展示了如何尝试直接将两个字符串`s1`和`s2`相加,实际上这是将两个字符串拼接,而非进行数值相加,这在C++中是不适用的:
```cpp
string s1 = "1234", s2 = "4321";
cout << s1 + s2; // 输出:12344321,不是数值相加
```
正确地将字符串转换为数字,通常涉及到字符串解析或格式化的过程。在C++中,可以使用`stoi`、`stol`等函数来完成这一任务,这些函数属于`<string>`头文件下的成员函数:
```cpp
#include <string>
#include <iostream>
int main() {
string strNumber = "1234";
int num = stoi(strNumber);
cout << num; // 输出:1234
return 0;
}
```
这里,`stoi`函数接受一个字符串作为参数,将其转换为整数。如果字符串不能被解析为有效的整数,会抛出一个异常。
接下来,文章转到C++的STL部分,介绍了排序算法,尤其是`sort`函数。`sort`函数是C++标准库提供的通用排序算法,可以对容器(如数组或vector)进行排序。默认情况下,它按升序排列元素,但可以通过提供自定义比较函数`comp`来实现降序排序。比如,用于降序排序的`my_comp`函数如下:
```cpp
int my_comp(const int &a, const int &b) {
return a > b; // 返回值1表示a应排在b之后,实现降序
}
```
然后,作者给出了一个完整的示例,演示了如何使用`sort`函数配合自定义的`my_comp`函数从键盘输入10个数并按降序输出:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a[10];
for (int i = 0; i < 10; ++i) cin >> a[i];
sort(a, a + 10, my_comp);
for (int i = 0; i < 10; ++i) cout << a[i] << ' ';
cout << endl;
return 0;
}
```
本文讲述了C++中将字符串转换为数字的错误方法以及如何使用内置函数正确处理,并重点介绍了如何利用STL中的`sort`函数及其自定义比较功能进行数组的排序操作。这对于提高编程效率和理解C++库的灵活运用具有重要的参考价值。