C++--iomanip库
目录
1. 设置字段宽度:std::setw()
2. 设置浮点数精度:std::setprecision()
3. 设置填充字符:std::setfill()
4. 控制对齐方式:std::left 和 std::right,std::internal
5. 控制进制输出:std::hex、std::dec、std::oct
6. 显示进制前缀:std::showbase 、大写输出:std::uppercase
7. 控制布尔值输出格式:std::boolalpha
8. 显示正号+:std::showpos
9. 针对浮点型:std::fixed,std::scientific
10. 解除设置,恢复默认格式:std::resetiosflags()
11. 设置读取字符数:setw()
12. 保存与恢复流状态:std::ios::fmtflags
<iomanip> 是 C++ 标准库中的一个头文件,用于控制输入输出的格式。它提供了一些流操作符(manipulators),可以帮助你更方便地格式化输出,比如设置宽度、精度、填充字符等。
以下是 `<iomanip>` 中一些常用的操作符:
1. 设置字段宽度:std::setw()
- 用于设置输出的宽度。
#include <iostream>#include <iomanip>int main() {std::cout << std::setw(10) << 123 << std::endl; // 输出宽度为10,右对齐return 0;}
输出:
```
123
```
2. 设置浮点数精度:std::setprecision()
- 用于设置浮点数输出的精度(小数点后的位数)。
#include <iostream>#include <iomanip>int main() {double pi = 3.1415926535;std::cout << std::setprecision(4) << pi << std::endl; // 输出3.142return 0;}
3. 设置填充字符:std::setfill()
- 用于设置填充字符,通常与std::setw 一起使用。
#include <iostream>#include <iomanip>int main() {std::cout << std::setw(10) << std::setfill('*') << 123 << std::endl; // 输出*******123return 0;}
4. 控制对齐方式:std::left 和 std::right,std::internal
- std::left:左对齐。
- std::right:右对齐(默认)。
- std::internal:针对数值右对齐,如针对-123,可对齐为-****123。
#include <iostream>#include <iomanip>int main() {std::cout << std::left << std::setw(10) << 123 << std::endl; // 左对齐std::cout << std::right << std::setw(10) << 123 << std::endl; // 右对齐return 0;}
#include <iostream>#include <iomanip>int main() {int num = -123;std::cout << std::setw(8) << std::internal << std::setfill('*') << num << std::endl; // 输出 -***123return 0;}
5. 控制进制输出:std::hex、std::dec、std::oct
- std::hex:输出十六进制。
- std::dec:输出十进制(默认)。
- std::oct:输出八进制。
#include <iostream>#include <iomanip>int main() {int num = 255;std::cout << std::hex << num << std::endl; // 输出ffstd::cout << std::dec << num << std::endl; // 输出255std::cout << std::oct << num << std::endl; // 输出377return 0;}
6. 显示进制前缀:std::showbase 、大写输出:std::uppercase
#include <iostream>#include <iomanip>int main() {int num = 255;std::cout << std::showbase << std::uppercase << std::hex << num << std::endl; // 输出 0XFFreturn 0;}
7. 控制布尔值输出格式:std::boolalpha
- 将布尔值输出为 true/false,而不是 1/0。
#include <iostream>int main() {bool flag = true;std::cout << std::boolalpha << flag << std::endl; // 输出truereturn 0;}
8. 显示正号+:std::showpos
- showpos 强制正数输出时显示正号。
代码示例如8图.
9. 针对浮点型:std::fixed,std::scientific
- fixed 针对浮点型变量以固定的小数位数进行输出的设置。(又称定点表示法)
- scientific 针对浮点型变量以科学计数法的形式输出。
#include <iostream>#include <iomanip>int main() {double num = 123.456;// 强制显示正号,定点表示法,保留两位小数std::cout << std::showpos << std::fixed << std::setprecision(2) << num << std::endl; // 输出 +123.46return 0;}
#include <iostream>#include <iomanip>int main() {double num = 123.456789;std::cout << std::fixed << std::setprecision(3) << num << std::endl; // 123.457std::cout << std::scientific << std::setprecision(3) << num << std::endl; // 1.235e+02return 0;}
科学计数法:编程中的科学计数法
另外,有fixed参与的设置(如上的 std::showpos << std::fixed << std::setprecision(2))还会作用于以后的所有代码,所以需要搭配 std::resetiosflags(std::ios::fixed) 来解除。
10. 解除设置,恢复默认格式:std::resetiosflags()
- 恢复默认格式。
#include <iostream>#include <cstdio>#include <iomanip>using namespace std;int main(){int n = 7;double m = 3.1415926; //重点关注 m 的输出变化cout << fixed << setprecision(2) << n << endl; //7cout << m << endl; //3.14cout << n << endl; //7cout << resetiosflags(ios::fixed) << n << endl; //7cout << m << endl; //3.1415926}
11. 设置读取字符数:setw()
- 限制读取的字符数。
#include <iostream>#include <iomanip>int main() {char buffer[10];std::cout << "输入一个单词(最多4字符):";std::cin >> std::setw(5) >> buffer; // 防止缓冲区溢出std::cout << "读取的内容:" << buffer << std::endl;return 0;}
12. 保存与恢复流状态:std::ios::fmtflags
- 这是个数据类型,用于修改流后,对这修改方案的保存。
#include <iostream>#include <iomanip>int main() {std::ios::fmtflags original_flags = std::cout.flags(); // 保存原始状态std::cout << std::hex << std::showbase << 255 << std::endl; // 输出 0xffstd::cout.flags(original_flags); // 恢复状态std::cout << 255 << std::endl; // 输出 255(十进制)return 0;}
其成员函数有三,
- flags,用于获取当前的输出流格式,
std::ios::fmtflags flags = std::cout.flags();
- setf(...),用于设定格式标志,如hex、showbase等,
std::cout.setf(std::ios_base::hex, std::ios_base::basefield); std::cout.setf(std::ios_base::showbase);
- unsetf(),用于清除指定格式标志,重置为默认值,
#include <iostream>int main() {// 设置格式标志std::cout.setf(std::ios::hex, std::ios::basefield);std::cout.setf(std::ios::showbase);// 输出一个整数std::cout << 42 << std::endl;// 关闭设置的格式标志std::cout.unsetf(std::ios::hex);std::cout.unsetf(std::ios::showbase);return 0;}
相关文章:
C++--iomanip库
目录 1. 设置字段宽度:std::setw() 2. 设置浮点数精度:std::setprecision() 3. 设置填充字符:std::setfill() 4. 控制对齐方式:std::left 和 std::right,std::internal 5. 控制进制输出:std::hex、std…...

Redis 集群原理、主从复制和哨兵模式的详细讲解
引言:本文记录了博主在学习Redis的过程中的原理,了解为什么使用与怎么样使用 Redis 集群,在使用 Redis 集群时出现的主从复制和哨兵模式的相关知识。本文并不涉及Redis安装。 文章目录 一、简单介绍什么是 Redis二、为什么要使用 Redis 集群三…...

基于Java的远程视频会议系统(源码+系统+论文)
第一章 概述 1.1 本课题的研究背景 随着人们对视频和音频信息的需求愈来愈强烈,追求远距离的视音频的同步交互成为新的时尚。近些年来,依托计算机技术、通信技术和网络条件的发展,集音频、视频、图像、文字、数据为一体的多媒体信息ÿ…...
springboot 事务管理
在Spring Boot中,事务管理是通过Spring框架的事务管理模块来实现的。Spring提供了声明式事务管理和编程式事务管理两种方式。通常,我们使用声明式事务管理,因为它更简洁且易于维护。 1. 声明式事务管理 声明式事务管理是通过注解来实现的。…...
深度学习-神经机器翻译模型
以下为你介绍使用Python和深度学习框架Keras(基于TensorFlow后端)实现一个简单的神经机器翻译模型的详细步骤和代码示例,该示例主要处理英 - 法翻译任务。 1. 安装必要的库 首先,确保你已经安装了以下库: pip insta…...

.NET周刊【2月第1期 2025-02-02】
国内文章 dotnet 9 已知问题 默认开启 CET 导致进程崩溃 https://www.cnblogs.com/lindexi/p/18700406 本文记录 dotnet 9 的一个已知且当前已修问题。默认开启 CET 导致一些模块执行时触发崩溃。 dotnet 使用 ColorCode 做代码着色器 https://www.cnblogs.com/lindexi/p/…...

【合集】Java进阶——Java深入学习的笔记汇总 amp; 再论面向对象、数据结构和算法、JVM底层、多线程
前言 spring作为主流的 Java Web 开发的开源框架,是Java 世界最为成功的框架,持续不断深入认识spring框架是Java程序员不变的追求;而spring的底层其实就是Java,因此,深入学习Spring和深入学习Java是硬币的正反面&…...

GPU、CUDA 和 cuDNN 学习研究【笔记】
分享自己在入门显存优化时看过的一些关于 GPU 和 CUDA 和 cuDNN 的网络资料。 更多内容见: Ubuntu 22.04 LTS 安装 PyTorch CUDA 深度学习环境-CSDN博客CUDA 计算平台 & CUDA 兼容性【笔记】-CSDN博客 文章目录 GPUCUDACUDA Toolkit都包含什么?NVID…...
【5】阿里面试题整理
[1]. 介绍一下ZooKeeper ZooKeeper是一个开源的分布式协调服务,核心功能是通过树形数据模型(ZNode)和Watch机制,解决分布式系统的一致性问题。 它使用ZAB协议保障数据一致性,典型场景包括分布式锁、配置管理和服务注…...

计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

Wpf美化按钮,输入框,下拉框,dataGrid
Wpf美化按钮,输入框,下拉框,dataGrid 引用代码后 引用资源 <ControlTemplate x:Key"CustomProgressBarTemplate" TargetType"ProgressBar"><Grid><Border x:Name"PART_Track" CornerRadius&q…...
搜索插入位置:二分查找的巧妙应用
问题描述 给定一个已排序的整数数组 nums 和一个目标值 target,要求在数组中找到目标值并返回其索引。如果目标值不存在于数组中,则返回它按顺序插入的位置。必须使用时间复杂度为 O(log n) 的算法。 示例: 示例1: 输入: nums …...
Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡
Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡 实战操作 去除权限 要在 Cocos2d-x 开发的游戏中去掉 APK 自带权限,可以按照以下步骤操作: 编辑 AndroidMa…...

自动化xpath定位元素(附几款浏览器xpath插件)
在 Web 自动化测试、数据采集、前端调试中,XPath 仍然是不可或缺的技能。虽然 CSS 选择器越来越强大,但面对复杂 DOM 结构时,XPath 仍然更具灵活性。因此,掌握 XPath,不仅能提高自动化测试的稳定性,还能在爬…...

String类(6)
大家好,今天我们继续来学习一下String类的查找方法,主要是反向查找的一些方法。 ⭐️从后往前找一样的道理,如果找到了就返回对应字符的下标. 如果后面有对应的字符,则会返回第一个遇到的字符下标. ⭐️注意一下传入字符串的找法…...
动态表格html
题目: 要求: 1.表格由专业班级学号1-10号同学的信息组成,包括:学号、姓 名、性别、二级学院、班级、专业、辅导员; 2.表格的奇数行字体为黑色,底色为白色;偶数行字体为白色,底 色为黑…...

ZU47DR 100G光纤 高性能板卡
简介 2347DR是一款最大可提供8路ADC接收和8路DAC发射通道的高性能板卡。板卡选用高性价比的Xilinx的Zynq UltraScale RFSoC系列中XCZU47DR-FFVE1156作为处理芯片(管脚可以兼容XCZU48DR-FFVE1156,主要差别在有无FEC(信道纠错编解码࿰…...

mysql8.0使用pxc实现高可用
环境准备 准备三台虚拟机,其对应的主机名和IP地址为 pxc-1192.168.190.129pxc-2192.168.190.133pxc-3192.168.190.134 解析,都要做解析 测试 下载pxc的安装包, 官网:https://www.percona.com/downloads 选择8.0的版本并下载,…...
Kotlin 使用 Chrome 无头浏览器
1. 概念 无头浏览器在类似于流行网络浏览器的环境中提供对网页的自动控制,但是通过命令行界面或使用网络通信来执行。 它们对于测试网页特别有用,因为它们能够像浏览器一样呈现和理解超文本标记语言,包括页面布局、颜色、字体选择以及JavaSc…...

Arbess基础教程-创建流水线
Arbess(谐音阿尔卑斯) 是一款开源免费的 CI/CD 工具,本文将介绍如何使用 Arbess 配置你的第一条流水线,以快速入门上手。 1. 创建流水线 根据不同需求来创建不同的流水线。 1.1 配置基本信息 配置流水线的基本信息,如分组,环境&…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...