当前位置: 首页 > 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;及时、准确地获取并分析测试报告对保障软件质量至关重要。本文将详细…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...