C++ STL容器与浮点数精度控制:详解与实例
需积分: 21 172 浏览量
更新于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 上传
2014-07-20 上传
2021-04-28 上传
2021-09-28 上传
2022-11-20 上传
点击了解资源详情
嵩韵儿
- 粉丝: 103
- 资源: 11
最新资源
- FiniteDifferencePricing:Crank Nicolson方案的C ++应用程序通过Green函数对付红利的美国期权定价
- es6-jest-ramda-样板
- WindowsTerminalHere:右击.inf文件的Windows终端的资源管理器“此处的Windows终端”,直到直接支持它为止
- IAAC_Cloud-Based-Management_FR:该存储库是IAAC(MaCAD计划)的基于云的管理研讨会的最终提交内容的一部分
- 实现界面放大镜功能ios源码下载
- 电子功用-基于应用统计方法和嵌入式计算的智能电子闹钟设定方法
- 汉堡建筑商
- infogram-java-samples
- ct-ng-toolchains:适用于Altera SoCFPGA和NXP LPC32xx目标的裸机ARM工具链
- StudyMegaParsec:研究megaparsec的用法
- vercelly-app:React Native应用程序,用于管理Vercel项目和部署
- 一个很漂亮的VC++登录窗体界面
- hackontrol-frontend:一个React JS前端应用程序Hackontrol
- 基于micropython的ESP32血压、血氧、心率、体温的传感系统(python)
- crispy-couscous
- Echarts商业级数据图表库模块v1.6.0.241.rar