C++ STL容器与浮点数精度控制:详解与实例
需积分: 21 186 浏览量
更新于2024-08-05
收藏 28KB DOCX 举报
本文将详细介绍C++标准模板库(STL)中的几种核心容器以及它们在程序开发中的应用,包括如何控制浮点数输出的精度,以及字符串与整数、浮点数之间的相互转换。具体知识点如下:
1. **C++ setprecision 控制浮点数输出精度**
`std::setprecision` 是一个用于设置输出流中浮点数精度的成员函数,它属于 `<iomanip>` 头文件。通过调用 `setprecision(n)`,程序员可以指定输出的数字小数点后有 n 位有效数字。同时,与 `fixed` 一起使用,可以限制小数点后的位数。例如:
```cpp
cout << setprecision(2) << 1.251 << endl; // 输出结果:1.3
cout << fixed << setprecision(2) << 1.236 << endl; // 输出结果:1.24
```
请注意,这会影响 `std::cout` 的输出格式,不会改变实际数值。
2. **字符串转换为整数/浮点数/双精度**
- `stoi`, `stod`, `stof`, `stold`, `stoll`, `stoul`, 和 `stoull` 这些函数分别用于将字符串转换为不同类型的整数(如 `int`, `long`, `long long`, `unsigned long long`),浮点数(`double`)和无符号整数。例如:
- `inta = stoi("123");`
- `double b = stod("123.44");`
如果输入字符串不符合预期格式,`stoi` 和 `stod` 会根据规则处理错误,如截取有效数字部分或抛出运行时异常。
3. **字符数组(charc[])转数字**
对于字符数组,可以使用 `sscanf` 函数进行转换。例如:
```cpp
char c[50] = "123";
int a;
sscanf(c, "%d", &a); // 使用 "&" 符号获取地址以存储结果
```
`sscanf` 会根据提供的格式字符串 `%d` 解析字符数组,并将结果存储到指定的位置。
4. **STL 容器的基本介绍**
STL 提供了多种容器来存储数据,包括:
- **queue**:先进先出(FIFO)的数据结构,典型应用场景如消息队列。
- **deque**:双端队列,支持在两端高效地插入和删除元素。
- **vector**:动态数组,提供随机访问,常用于动态存储线性数据。
- **string**:字符串类,用于处理文本数据。
- **set** 和 **map**:集合和关联容器,分别存储无序且唯一的关键字和有序且键值对的形式。
5. **stack**:后进先出(LIFO)的数据结构,类似于物理栈,用于递归调用等场景。
这些基本概念和操作在C++编程中非常重要,理解并熟练运用它们能帮助开发者更高效地处理数据和构建复杂的数据结构。同时,精确控制输出格式可以提升代码的可读性和一致性。在实际项目中,合理选择和使用STL容器,结合其他C++特性,能够编写出更加优雅、高效的代码。
181 浏览量
2009-05-02 上传
2017-01-05 上传
2014-07-20 上传
2021-04-28 上传
2021-09-28 上传
2020-12-30 上传
嵩韵儿
- 粉丝: 99
- 资源: 11
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程