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

C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed

 

目录

四种操纵符简要介绍 

setprecision基本用法

setfill的基本用法

fixed的基本用法

setw基本用法

以下是一些常见的用法和示例:

1. 设置字段宽度和填充字符

2. 设置字段宽度和对齐方式

3. 设置字段宽度和精度

4. 设置字段宽度和填充字符,结合对齐方式

5. 设置字段宽度和填充字符,结合对齐方式和精度

总结

                                 收藏加关注,观看不迷路


 

四种操纵符简要介绍 

setw 是 C++ 中用于控制输出格式的操纵符,它用于设置输出字段的宽度,默认右对齐。当输出值的字符数少于指定的字段宽度时,剩余的部分默认用空格填充,或其他指定的填充字符填充。setw 的作用是确保输出值占据指定的宽度,从而实现对齐和格式化输出。

setfill 是 C++ 中用于控制输出格式的操纵符,它用于设置填充字符。当输出字段的宽度大于实际输出值的字符数时,setfill 指定的字符将用来填充剩余的空间常与setw结合使用。默认的填充字符是空格。

setprecision 是 C++ 中用于控制浮点数输出精度的操纵符。它通常与 iostream 库一起使用,用于设置浮点数输出时小数点后的位数。setprecision 的作用是设置后续浮点数输出的精度,直到下一次改变精度为止。

fixed 是 C++ 中用于设置浮点数输出格式的操纵符。它用于指定浮点数以固定小数点格式输出,而不是科学计数法格式。fixed 通常与 setprecision 一起使用,以控制小数点后的位数。

setprecision基本用法

#include<iostream>
#include<iomanip> // 包含用于控制输出格式的头文件
using namespace std;int main() {double num = 123.456789;// 设置精度为3位小数cout << setprecision(3) << num << endl;// 设置精度为5位小数cout << setprecision(5) << num << endl;return 0;
}

输出

123.457
123.45679

详细解释

  1. setprecision(n):

    • 设置浮点数输出时小数点后的位数为 n

    • n 是一个整数,表示小数点后的位数。

  2. 精度设置的范围:

    • setprecision 设置的精度范围包括小数点后的所有数字,但不包括小数点前的数字。

  3. 四舍五入:

    • 当设置的精度小于实际小数位数时,setprecision 会自动进行四舍五入

  4. 默认精度:

    • 如果不使用 setprecision默认的精度通常是6位小数

setfill的基本用法

#include<iostream>
#include<iomanip> // 包含用于控制输出格式的头文件
using namespace std;int main() {int a = 1, b = 123, c = 4567;// 设置字段宽度为10,填充字符为'*'cout << setw(10) << setfill('*') << a << endl;cout << setw(10) << setfill('*') << b << endl;cout << setw(10) << setfill('*') << c << endl;return 0;
}

输出

*********1
*******123
******4567

详细解释

  1. setfill(char):

    • 设置填充字符为指定的字符 char

    • 例如,setfill('*') 将填充字符设置为 *

  2. setw(int):

    • 设置输出字段的宽度为指定的整数 int

    • 例如,setw(10) 将输出字段的宽度设置为 10 个字符。

  3. 填充字符的作用:

    • 当实际输出值的字符数少于指定的字段宽度时,剩余的部分将用填充字符填充。

    • 默认的填充字符是空格,但可以通过 setfill 改变。

fixed的基本用法

#include<iostream>
#include<iomanip> // 包含用于控制输出格式的头文件
using namespace std;int main() {double num = 123.456789;// 设置浮点数以固定小数点格式输出,精度为3位小数cout << fixed << setprecision(3) << num << endl;// 设置浮点数以固定小数点格式输出,精度为5位小数cout << fixed << setprecision(5) << num << endl;return 0;
}

输出

123.457
123.45679

详细解释

  1. fixed:

    • 设置浮点数以固定小数点格式输出。

    • 在固定小数点格式下,浮点数的小数部分会显示指定的位数,不足的部分会用零填充。

  2. setprecision(n):

    • 设置浮点数输出时小数点后的位数为 n

    • n 是一个整数,表示小数点后的位数。

  3. 四舍五入:

    • 当设置的精度小于实际小数位数时,setprecision 会自动进行四舍五入。

  4. 默认格式:

    • 如果不使用 fixedscientific,浮点数的输出格式默认是科学计数法。

 

setw基本用法

#include<iostream>
#include<iomanip> // 包含用于控制输出格式的头文件
using namespace std;int main() {int a = 1, b = 123, c = 4567;// 设置字段宽度为10cout << setw(10) << a << endl;cout << setw(10) << b << endl;cout << setw(10) << c << endl;return 0;
}

输出

         11234567

详细解释

  1. setw(int):

    • 设置输出字段的宽度为指定的整数 int

    • 例如,setw(10) 将输出字段的宽度设置为 10 个字符。

  2. 字段宽度的作用:

    • 当实际输出值的字符数少于指定的字段宽度时,剩余的部分将用空格填充。

    • 默认的填充字符是空格,但可以通过 setfill 改变。

  3. 对齐方式:

    • 默认情况下,输出值是右对齐的

    • 可以通过 leftright 操纵符改变对齐方式。

 

以下是一些常见的用法和示例:

1. 设置字段宽度和填充字符

#include<iostream>
#include<iomanip>
using namespace std;int main() {int a = 1, b = 123, c = 4567;// 设置字段宽度为10,填充字符为'*'cout << setw(10) << setfill('*') << a << endl;cout << setw(10) << setfill('*') << b << endl;cout << setw(10) << setfill('*') << c << endl;return 0;
}

输出

*********1
*******123
******4567

2. 设置字段宽度和对齐方式

#include<iostream>
#include<iomanip>
using namespace std;int main() {int a = 1, b = 123, c = 4567;// 设置字段宽度为10,右对齐cout << setw(10) << right << a << endl;cout << setw(10) << right << b << endl;cout << setw(10) << right << c << endl;// 设置字段宽度为10,左对齐cout << setw(10) << left << a << endl;cout << setw(10) << left << b << endl;cout << setw(10) << left << c << endl;return 0;
}

输出

         11234567
1        
123      
4567     

3. 设置字段宽度和精度

#include<iostream>
#include<iomanip>
using namespace std;int main() {double a = 1.23456, b = 123.456, c = 4567.89;// 设置字段宽度为10,精度为2位小数cout << setw(10) << setprecision(2) << fixed << a << endl;cout << setw(10) << setprecision(2) << fixed << b << endl;cout << setw(10) << setprecision(2) << fixed << c << endl;return 0;
}

输出

    1.23123.464567.89

4. 设置字段宽度和填充字符,结合对齐方式

#include<iostream>
#include<iomanip>
using namespace std;int main() {int a = 1, b = 123, c = 4567;// 设置字段宽度为10,填充字符为'*',右对齐cout << setw(10) << setfill('*') << right << a << endl;cout << setw(10) << setfill('*') << right << b << endl;cout << setw(10) << setfill('*') << right << c << endl;// 设置字段宽度为10,填充字符为'*',左对齐cout << setw(10) << setfill('*') << left << a << endl;cout << setw(10) << setfill('*') << left << b << endl;cout << setw(10) << setfill('*') << left << c << endl;return 0;
}

输出

*********1
*******123
******4567
1*********
123*******
4567******

5. 设置字段宽度和填充字符,结合对齐方式和精度

#include<iostream>
#include<iomanip>
using namespace std;int main() {double a = 1.23456, b = 123.456, c = 4567.89;// 设置字段宽度为10,填充字符为'*',右对齐,精度为2位小数cout << setw(10) << setfill('*') << right << setprecision(2) << fixed << a << endl;cout << setw(10) << setfill('*') << right << setprecision(2) << fixed << b << endl;cout << setw(10) << setfill('*') << right << setprecision(2) << fixed << c << endl;// 设置字段宽度为10,填充字符为'*',左对齐,精度为2位小数cout << setw(10) << setfill('*') << left << setprecision(2) << fixed << a << endl;cout << setw(10) << setfill('*') << left << setprecision(2) << fixed << b << endl;cout << setw(10) << setfill('*') << left << setprecision(2) << fixed << c << endl;return 0;
}

输出

********1.23
******123.46
*****4567.89
1.23********
123.46******
4567.89*****

总结

  • setfill(char): ◦  设置填充字符为指定的字符 char。    

  • setw(int): ◦  设置输出字段的宽度为指定的整数 int。

  • right:设置右对齐。

  • left:设置左对齐。

  • setprecision(int):设置浮点数的精度为指定的整数int。

  • fixed:设置浮点数以固定小数点格式输出。

这些操纵符可以组合使用,以实现各种复杂的输出格式,仅适用cout输出,若用C语言风格printf输出,无需上述操纵符。

 

 

                                 收藏加关注,观看不迷路

 

相关文章:

C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed

目录 四种操纵符简要介绍 setprecision基本用法 setfill的基本用法 fixed的基本用法 setw基本用法 以下是一些常见的用法和示例&#xff1a; 1. 设置字段宽度和填充字符 2. 设置字段宽度和对齐方式 3. 设置字段宽度和精度 4. 设置字段宽度和填充字符&#xff0c;结合…...

C++ ——— 学习并使用 priority_queue 类

目录 何为 priority_queue 类 学习并使用 priority_queue 类 实例化一个 priority_queue 类对象 插入数据 遍历堆&#xff08;默认是大堆&#xff09; 通过改变实例化的模板参数修改为小堆 何为 priority_queue 类 priority_queue 类为 优先级队列&#xff0c;其本质就是…...

基础项目实战——3D赛车(c++)

目录 前言一、渲染引擎二、关闭事件三、梯形绘制四、轨道绘制五、边缘绘制六、草坪绘制七、前后移动八、左右移动​九、曲线轨道​十、课山坡轨道​十一、循环轨道​十二、背景展示​十三、引入速度​十四、物品绘制​十五、课数字路障​十六、分数展示​十七、重新生成​十八、…...

ODP(OBProxy)路由初探

OBProxy路由策略 Primary Zone 路由 官方声明默认情况&#xff0c;会将租户请求发送到租户的 primary zone 所在的机器上&#xff0c;通过 Primary Zone 路由可以尽量发往主副本&#xff0c;方便快速寻找 Leader 副本。另外&#xff0c;设置primary zone 也会在一定成都上减少…...

从零推导线性回归:最小二乘法与梯度下降的数学原理

​ 欢迎来到我的主页&#xff1a;【Echo-Nie】 本篇文章收录于专栏【机器学习】 本文所有内容相关代码都可在以下仓库中找到&#xff1a; Github-MachineLearning 1 线性回归 1.1 什么是线性回归 线性回归是一种用来预测和分析数据之间关系的工具。它的核心思想是找到一条直…...

计算机网络__基础知识问答

Question: 1&#xff09;在计算机网络的5层结构中&#xff0c;每一层的功能大概是什么&#xff1f; 2&#xff09;交换机的功能&#xff1f;https://www.bilibili.com/video/BV1na4y1L7Ev 3&#xff09;路由器的功能&#xff1f;https://www.bilibili.com/video/BV1hv411k7n…...

第 5 章:声音与音乐系统

5.1 声音效果的应用 在游戏中&#xff0c;声音效果是增强游戏沉浸感和趣味性的重要元素。Pygame 提供了强大的音频处理功能&#xff0c;使得添加各种声音效果变得相对简单。声音效果可以包括角色的动作音效&#xff0c;如跳跃、攻击、受伤时的声音&#xff1b;环境音效&#x…...

C语言编译过程全面解析

今天是2025年1月26日&#xff0c;农历腊月二十七&#xff0c;一个距离新春佳节仅一步之遥的日子。城市的喧嚣中&#xff0c;年味已悄然弥漫——能在这个时候坚持上班的人&#xff0c;真可称为“牛人”了吧&#xff0c;哈哈。。。。 此刻&#xff0c;我在重新审视那些曾被遗忘的…...

算法每日双题精讲 —— 前缀和(【模板】一维前缀和,【模板】二维前缀和)

在算法竞赛与日常编程中&#xff0c;前缀和是一种极为实用的预处理技巧&#xff0c;能显著提升处理区间和问题的效率。今天&#xff0c;我们就来深入剖析一维前缀和与二维前缀和这两个经典模板。 一、【模板】一维前缀和 题目描述 给定一个长度为 n n n 的整数数组 a a a&…...

Maui学习笔记- SQLite简单使用案例02添加详情页

我们继续上一个案例&#xff0c;实现一个可以修改当前用户信息功能。 当用户点击某个信息时&#xff0c;跳转到信息详情页&#xff0c;然后可以点击编辑按钮导航到编辑页面。 创建项目 我们首先在ViewModels目录下创建UserDetailViewModel。 实现从详情信息页面导航到编辑页面…...

VMware 中Ubuntu无网络连接/无网络标识解决方法【已解决】

参考文档 Ubuntu无网络连接/无网络标识解决方法_ubuntu没网-CSDN博客 再我们正常使用VMware时&#xff0c;就以Ubuntu举例可能有时候出现无网络连接&#xff0c;甚至出现无网络标识的情况&#xff0c;那么废话不多说直接上教程 环境&#xff1a;无网络 解决方案&#…...

完美世界前端面试题及参考答案

如何设置事件捕获和事件冒泡? 在 JavaScript 中,可以通过addEventListener方法来设置事件捕获和事件冒泡。该方法接收三个参数,第一个参数是事件类型,如click、mousedown等;第二个参数是事件处理函数;第三个参数是一个布尔值,用于指定是否使用事件捕获机制。当这个布尔值…...

新时代架构SpringBoot+Vue的理解(含axios/ajax)

文章目录 引言SpringBootThymeleafVueSpringBootSpringBootVue&#xff08;前端&#xff09;axios/ajaxVue作用响应式动态绑定单页面应用SPA前端路由 前端路由URL和后端API URL的区别前端路由的数据从哪里来的 Vue和只用三件套axios区别 引言 我是一个喜欢知其然又知其所以然的…...

代理模式 -- 学习笔记

代理模式学习笔记 什么是代理&#xff1f; 代理是一种设计模式&#xff0c;用户可以通过代理操作&#xff0c;而真正去进行处理的是我们的目标对象&#xff0c;代理可以在方法增强&#xff08;如&#xff1a;记录日志&#xff0c;添加事务&#xff0c;监控等&#xff09; 拿一…...

gif动画图像优化,相同的图在第2,4,6帧中重复出现,会增加图像体积吗?

对于 GIF 图像&#xff0c;情况与 Git 文件存储有所不同。GIF 是一种图像格式&#xff0c;其体积主要取决于图像的内容、颜色数量、优化设置等因素。如果在 GIF 动画中&#xff0c;相同的图像在第 2、4、6 帧中重复出现&#xff0c;是否会增加图像体积&#xff0c;取决于以下几…...

Harmony Next 跨平台开发入门

ArkUI-X 官方介绍 官方文档&#xff1a;https://gitee.com/arkui-x/docs/tree/master/zh-cn ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台&#xff1a;目前支持OpenHarmony、Android、 iOS&#xff0c;后续会逐步增加更多平台支持。开发者基于一套主代码…...

阿里巴巴Qwen团队发布AI模型,可操控PC和手机

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

android 音视频系列引导

音视频这块的知识点自己工作中有用到&#xff0c;一直没有好好做一个总结&#xff0c;原因有客观和主观的。 客观是工作太忙&#xff0c;没有成段时间做总结。 主观自己懒。 趁着这次主动离职拿了n1的钱&#xff0c;休息一下&#xff0c;对自己的人生做一下总结&#xff0c;…...

STM32调试手段:重定向printf串口

引言 C语言中经常使用printf来输出调试信息&#xff0c;打印到屏幕。由于在单片机中没有屏幕&#xff0c;但是我们可以重定向printf&#xff0c;把数据打印到串口&#xff0c;从而在电脑端接收调试信息。这是除了debug外&#xff0c;另外一个非常有效的调试手段。 一、什么是pr…...

基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结

title: 基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结 tags: - jenkins - python categories: - jenkins在软件开发的持续集成与持续交付&#xff08;CI/CD&#xff09;流程里&#xff0c;及时、准确地获取并分析测试报告对保障软件质量至关重要。本文将详细…...

保姆级教程:手把手教你将VisDrone数据集转成MOT格式,适配MOTR等模型训练

保姆级教程&#xff1a;手把手教你将VisDrone数据集转成MOT格式&#xff0c;适配MOTR等模型训练 在计算机视觉领域&#xff0c;多目标跟踪(MOT)一直是研究热点之一。而VisDrone作为无人机视角下的经典数据集&#xff0c;其丰富的场景和挑战性的标注使其成为MOT研究的理想选择。…...

从ValueError到精准评估:解决超分辨率重建中SSIM/PSNR计算的三大实战难题

1. 从报错到理解&#xff1a;新版skimage的SSIM/PSNR计算函数变迁 第一次用skimage计算超分辨率重建指标时&#xff0c;我就被当头一棒——熟悉的compare_ssim和compare_psnr居然报"ImportError"。这就像你习惯去小区东门拿快递&#xff0c;突然发现快递柜搬到了西门…...

Spek音频频谱分析器:3分钟掌握专业音频分析技术

Spek音频频谱分析器&#xff1a;3分钟掌握专业音频分析技术 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 音频频谱分析是理解音频文件内在结构的关键技术&#xff0c;而Spek正是这一领域的专业工具。这款免费开…...

救命!毕业论文写到崩溃?这个神仙组合让我一周定稿[特殊字符]

从选题开题到答辩收尾&#xff0c;毕业论文是一场漫长的马拉松。选对工具&#xff0c;相当于给每个阶段都配上了加速器。 目前在专业论文写作领域&#xff0c;工具已分化为两条清晰的路线&#xff1a;全流程一站式平台&#xff08;如毕业之家&#xff09;和垂直领域深度工具&a…...

AI应用网关ai-proxy:统一管理多模型API调用,实现路由、缓存与限流

1. 项目概述&#xff1a;一个为AI应用量身打造的智能代理网关如果你正在开发或部署基于大语言模型&#xff08;LLM&#xff09;的应用&#xff0c;比如一个聊天机器人、一个代码助手&#xff0c;或者一个内容生成工具&#xff0c;那么你大概率会遇到一个头疼的问题&#xff1a;…...

告别卡顿!在Ubuntu 22.04 LTS上丝滑安装Burp Suite 2024.1(附国内源加速配置)

在Ubuntu 22.04 LTS上极速安装Burp Suite 2024.1的终极指南 每次启动Burp Suite都要等上几分钟&#xff1f;运行过程中频繁卡顿甚至崩溃&#xff1f;如果你正在使用Ubuntu 22.04 LTS或更新的版本&#xff0c;很可能是因为还在沿用那些针对Ubuntu 18.04的过时教程。本文将带你彻…...

open62541批量读写踩坑实录:从‘UA_ReadRequest’配置到结果解析的完整避坑指南

open62541批量读写深度实战&#xff1a;从核心配置到异常处理的完整解决方案 在工业自动化与物联网系统开发中&#xff0c;OPC UA协议已成为设备互联的事实标准。作为开源实现的佼佼者&#xff0c;open62541为开发者提供了强大而灵活的工具集。但当面对需要高效处理大量节点数据…...

告别本地跑模型:用恒源云+PyCharm专业版搭建你的第一个远程深度学习环境

告别本地跑模型&#xff1a;用恒源云PyCharm专业版搭建你的第一个远程深度学习环境 当你在本地笔记本上跑ResNet-18都卡得无法切换浏览器标签时&#xff0c;就该考虑把计算任务交给云端了。但真正阻碍开发者上云的往往不是技术门槛&#xff0c;而是开发体验的断层——谁都不想为…...

硅基量子比特稳健控制方案解析与优化

1. 半导体自旋量子比特的稳健量子控制方案解析在硅基量子计算领域&#xff0c;半导体自旋量子比特因其与现有半导体工艺的兼容性和相对较长的相干时间&#xff0c;被视为实现大规模量子计算的有力候选者。然而&#xff0c;量子比特间的持续耦合&#xff08;always-on couplings…...

基于ESP32-S3的免焊接RGB矩阵屏驱动方案:从硬件解析到项目实战

1. 项目概述&#xff1a;从零到一的免焊接RGB矩阵显示方案如果你曾经尝试过驱动一块RGB LED矩阵屏&#xff0c;大概率会经历一段“痛并快乐着”的时光。快乐在于&#xff0c;当代码跑通&#xff0c;绚丽的色彩在眼前流动时&#xff0c;那种成就感无与伦比&#xff1b;痛苦则在于…...