当前位置: 首页 > news >正文

【C++语法】输出的设置 iomanip 与 std::ios 中的流操纵符

文章目录

  • 【C++语法】输出的设置 `iomanip` 与 `std::ios` 中的流操纵符
    • 1. `iomanip` 中的流操纵方法
      • 1.1 位宽操作类
        • 1.1.1 `std::setw(x)`
        • 1.1.2 `std::setfill(c)`
        • 1.1.3 `std::left`
        • 1.1.4 `std::right`
        • 1.1.5 `std::internal`
      • 1.2 小数操作类
        • 1.2.1 `std::fixed`
        • 1.2.2 `std::setprecision(x)`
        • 1.2.3 `std::scientific`
        • 1.2.4 `std::showpoint`
        • 1.2.5 `std::noshowpoint`
      • 1.3 整数操作类
        • 1.3.1 `std::hex`
        • 1.3.2 `std::dec`
        • 1.3.3 `std::oct`
        • 1.3.4 `std::showbase`
        • 1.3.5 `std::noshowbase`
      • 1.4 布尔值操作类
        • 1.4.1 `std::boolalpha`
        • 1.4.2 `std::noboolalpha`
      • 1.5 其他操作类
        • 1.5.1 `std::uppercase`
        • 1.5.2 `std::nouppercase`
        • 1.5.3 `std::showpos`
        • 1.5.4 `std::noshowpos`
    • 2. `std::ios` 中的流操纵方法
      • 2.1 格式设置函数
        • 2.1.1 `std::resetiosflags(f)`
        • 2.1.2 `std::setiosflags(f)`
      • 2.2 `std::ios` 的流操纵符

【C++语法】输出的设置 iomanipstd::ios 中的流操纵符

iomanip 是 C++ 标准库中用于格式化输出的头文件,提供了多种流操纵符(Manipulators),用于控制输出的对齐、宽度、精度、填充字符等。同时,这里面还会有 std::ios 中的流操纵符。还有这篇文章将会详细的讲解,希望能够帮上你

1. iomanip 中的流操纵方法

这些是 std 相关的标志位控制函数,可以直接用于 << 像输出字符串一样输出调整格式,但是只会对这一条语句中的内容生效

1.1 位宽操作类

1.1.1 std::setw(x)

std::setw(x) 可以为下一个输出内容设置位宽为 xxx,也就是占用占用 xxx 个字符位,空缺的用某种字符补位。占位符默认为空格,且向右对齐

1.1.2 std::setfill(c)

std::setfill(c)std::setw(n) 配合,可以设置占位符为 cccccc字符,不是字符串

1.1.3 std::left

std::leftstd::setw(n) 配合,可以设置输出内容为左对齐方式

1.1.4 std::right

std::rightstd::setw(n) 配合,可以设置输出内容为右对齐方式(默认)

1.1.5 std::internal

std::internalstd::setw(n) 配合,表示设置数字为符号左对齐,数字右对齐的方式

1.2 小数操作类

1.2.1 std::fixed

std::fixed 用于固定输出的小数位数,例如 std::cout << std::fixed << 3.14000 输出 3.14000 而不是 3.14

1.2.2 std::setprecision(x)

std::setprecision(x) 表示设置浮点数保留小数点后 xxx 位,通常与 std::fixed 配合

为什么不能单独用 std::setprecision(x)
单独用是语法正确的,但是,在小学数学老师讲四舍五入时讲到过一个误区,4.9994.9994.999 四舍五入保留一位小数应该等于 5.05.05.0 而不是 555。加上 std::fixed 防止去掉小数部分末尾的 000

1.2.3 std::scientific

std::scientific 用于将浮点数以科学计数法形式输出,e 默认小写,想要调成大写 E 可以使用 std::uppercase,默认 std::nouppercase

1.2.4 std::showpoint

std::showpoint 用于强制让所有的数字加上小数点,例如 1 输出为 1.2.72 输出 2.72

1.2.5 std::noshowpoint

std::noshowpoint 用于让所有的数字不强制性地加上小数点,例如 3 输出 3(默认)

1.3 整数操作类

1.3.1 std::hex

std::hex 设置整数以十六进制输出,a ~ f 默认小写,想要切换大写使用 std::uppercase,默认 std::nouppercase

1.3.2 std::dec

std::dec 设置整数以十进制输出(默认)

1.3.3 std::oct

std::oct 设置整数以八进制输出

1.3.4 std::showbase

std::showbase 设置显示进制前缀,例如十六进制数前面加上 0x(或 0X),八进制数前面加上一个 0

1.3.5 std::noshowbase

std::noshowbase 设置不显示进制的前缀(默认)

1.4 布尔值操作类

布尔值是什么?
布尔值(Boolean Value),表示一种条件是否成立,111true 表示成立,000false 表示不成立,只有两个值。这个东西会在下一章的条件语句中提到

1.4.1 std::boolalpha

std::boolalpha 设置布尔值输出 truefalse

1.4.2 std::noboolalpha

std::noboolalpha 设置布尔值输出 10(默认)

1.5 其他操作类

1.5.1 std::uppercase

std::uppercase 设置十六进制字符 A ~ F 大写,设置科学计数法 E 大写

1.5.2 std::nouppercase

std::nouppercase 设置十六进制字符 A ~ F 小写,设置科学计数法 E 小写

1.5.3 std::showpos

std::showpos 使正数显示出 +

1.5.4 std::noshowpos

std::noshowpos 使正数不显示出 +

2. std::ios 中的流操纵方法

这些事 std::ios(或 std::ios_base)相关的流操纵符,使用另外的函数设置格式,可以让多行的 std::cout 使用同一个格式标志,还可以重置、叠加,它们的头文件也是 iomanip

2.1 格式设置函数

2.1.1 std::resetiosflags(f)

将之前的所有格式标志去除,并添加一个 std::ios 流操纵符 f,也就是格式重定义

2.1.2 std::setiosflags(f)

再之前的基础上叠加一个 std::ios 流操纵符 f,也就是格式叠加

2.2 std::ios 的流操纵符

iomanip 流操纵符一样,例如 std::fixedstd::hex,但是,在 std::ios 中,会写成 std::ios::fixedstd::ios::hex 等,在 std 后面加一个 ios

http://www.dtcms.com/a/326151.html

相关文章:

  • 金蝶云星辰模拟报价功能助力企业快速决策
  • CV 医学影像分类、分割、目标检测,之分类项目拆解
  • Nginx(企业高性能web服务器)
  • 需求优先级如何划分
  • AI炼丹日志-32- memvid 大模型数据库!用视频存储+语义检索实现秒级搜索
  • Pluto Pillow如何靠 “私人定制” 枕头引爆海外市场
  • 学习笔记|decorator 装饰器是什么?
  • 2025-8-11-C++ 学习 暴力枚举(2)
  • 【Linux文件操作】文件操作系统调用
  • [激光原理与应用-231]:光学 - 光学的主要分支、研究对象、应用场合与职业方向(几何光学、物理光学、量子光学、集成光学、非线性光学制造工艺、光学系统设计)
  • 左子树之和
  • 解锁AI性能密码:RAG和智能体评估指标的终极指南
  • 简单的身份验证中间件Tinyauth
  • Day43--动态规划--674. 最长连续递增序列,300. 最长递增子序列,718. 最长重复子数组
  • 算力板卡:AI时代的“算力心脏”
  • 指针和引用的区别
  • SQL中BETWEEN与IN的差异详解
  • Mybatis学习之缓存(九)
  • BM25算法记忆
  • 推荐中的在线学习
  • macos彻底删除vscode
  • Spring JDBC
  • 零基础AI编程开发微信小程序赚流量主广告实战
  • 6s081实验1
  • redis(2)-java客户端使用(IDEA基于springboot)
  • USB 基本描述符
  • Go 多进程编程-管道
  • C++方向知识汇总(三)
  • 面试实战 问题二十三 如何判断索引是否生效,什么样的sql会导致索引失效
  • git:分支