「C/C++」C/C++标准库 之 #inlcude<iomanip> 输入输出流格式化

在这里插入图片描述

✨博客主页
何曾参静谧的博客(✅关注、👍点赞、⭐收藏、👻转发)
📚全部专栏(专栏会有变化,以最新发布为准)
「Win」Windows程序设计「IDE」集成开发环境「定制」定制开发集合
「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「UG/NX」BlockUI集合
「Py」Python程序设计「Math」探秘数学世界「PK」Parasolid函数说明
「Web」前后端全栈开发「En」英语从零到一👍占位符
「AI」人工智能大模型

C++ 标准库 iomanip 详解

一、引言

C++ 标准库中的 <iomanip> 是一个功能强大的头文件,它提供了对输入/输出流的格式化操作。通过一系列的控制符和接口函数,开发者能够灵活地控制数据的显示格式,包括设置小数点后的位数、字段宽度、对齐方式等。本文将对 <iomanip> 的主要功能和常用函数进行详细介绍,并通过示例代码展示其使用方法。

二、主要功能

<iomanip> 提供的主要功能包括:

  1. 设置整数进制:可以将整数设置为八进制、十进制或十六进制显示。
  2. 字符填充:在输出字段宽度不足时,使用指定的字符进行填充。
  3. 设置浮点数精度:控制浮点数小数点后的位数。
  4. 字段宽度:设置输出字段的宽度。
  5. 对齐方式:支持左对齐、右对齐和内部对齐(符号靠左,其余靠右)。
  6. 格式标志:可以设置或重置各种格式标志,如固定小数位数、科学计数法、忽略前导空格等。

三、常用函数

以下是 <iomanip> 中常用的函数及其功能:

  1. std::setw(int n):设置字段宽度为 n 位。
  2. std::setfill(char c):设置填充字符为 c,默认是空格。
  3. std::left:设置左对齐。
  4. std::right:设置右对齐(默认)。
  5. std::internal:符号靠左,其余靠右。
  6. std::setprecision(int n):设置浮点数的有效位数为 n 位。
  7. std::fixed:设置定点格式输出浮点数。
  8. std::scientific:设置科学计数法格式输出浮点数。
  9. std::hex:设置整数以十六进制显示。
  10. std::oct:设置整数以八进制显示。
  11. std::dec:设置整数以十进制显示(默认)。
  12. std::showbase:显示进制前缀(如 0x 表示十六进制)。
  13. std::noshowbase:隐藏进制前缀(默认)。
  14. std::uppercase:十六进制字母显示为大写。
  15. std::nouppercase:十六进制字母显示为小写(默认)。
  16. std::showpos:在正数前显示 + 符号。
  17. std::noshowpos:不显示正数的 + 符号(默认)。
  18. std::boolalpha:布尔值以 true/false 输出。
  19. std::noboolalpha:布尔值以 1/0 输出(默认)。
  20. std::setbase(int n):设置整数的进制(支持 8、10、16)。
  21. std::resetiosflags:重置指定的流状态。
  22. std::setiosflags:设置指定的流状态。

四、示例代码

以下是一些使用 <iomanip> 的示例代码,展示了如何设置浮点数的显示格式、字段宽度和填充字符等:

#include <iostream>
#include <iomanip>

int main() {
    double num = 123.456789;
    int intNum = 12345;

    // 设置输出宽度和填充字符
    std::cout << std::setw(10) << std::setfill('*') << intNum << std::endl;

    // 设置浮点数输出精度
    std::cout << std::setprecision(3) << num << std::endl;

    // 使用 fixed 操纵器设置浮点数输出格式
    std::cout << std::fixed << std::setprecision(4) << num << std::endl;

    // 使用 scientific 操纵器设置浮点数输出格式
    std::cout << std::scientific << std::setprecision(2) << num << std::endl;

    // 设置左对齐输出
    std::cout << std::left << std::setw(10) << intNum << std::endl;

    return 0;
}

五、注意事项

在使用 <iomanip> 时,需要注意以下几点:

  1. setprecisionfixedscientific 的配合setprecisionfixedscientific 合作时可以控制小数点后的位数,但如果不配合使用,setprecision 设置的是总的有效数字位数。
  2. showpoint:使用 showpoint 可以确保在输出浮点数时,即使末尾是 0 也会显示小数点,这对于保持数值的精度和格式一致性非常有帮助。
  3. setfillsetw 的配合使用setw 会设置字段的宽度,而 setfill 会指定填充字符。如果单独使用 setw 而不指定填充字符,则默认使用空格进行填充。
  4. setiosflagsresetiosflags:这两个函数用于设置或重置流的格式标志,但需要注意这些标志的作用范围和持续时间,以避免对后续的输出产生意外影响。

六、总结

<iomanip> 是 C++ 编程中处理输入输出格式化的重要工具。通过熟练掌握其使用方法和注意事项,程序员能够更加灵活地控制数据的显示格式,提高编程的效率和代码的可读性。在数据处理、报表生成、日志记录等场景中,<iomanip> 发挥着重要作用,是 C++ 标准库中不可或缺的一部分。

何曾参静谧的博客(✅关注、👍点赞、⭐收藏、👻转发)


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何曾参静谧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值