C++实用技巧:字符串转数字及排序算法详解

需积分: 30 1 下载量 172 浏览量 更新于2024-08-25 收藏 479KB PPT 举报
本篇文章主要讲解的是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++库的灵活运用具有重要的参考价值。