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

server/2025/2/3 9:17:56/

 

目录

四种操纵符简要介绍 

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输出,无需上述操纵符。

 

 

                                 收藏加关注,观看不迷路

 


http://www.ppmy.cn/server/164573.html

相关文章

Java 网络原理 ②-IP协议

这里是Themberfue 经过五节课的传输层协议的讲解&#xff0c;接下来我们将进入网络层协议——IP协议的讲解了~~~ IP协议 IP 相信大家在日常生活中或多或少都听过&#xff0c;你的IP地址是什么&#xff1f;192.168.0.1 ......✨IP 其实是个网络层协议&#xff0c;即互联网协议&…

【算法】回溯算法专题② ——组合型回溯 + 剪枝 python

目录 前置知识进入正题小试牛刀实战演练总结 前置知识 【算法】回溯算法专题① ——子集型回溯 python 进入正题 组合https://leetcode.cn/problems/combinations/submissions/596357179/ 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以…

电脑要使用cuda需要进行什么配置

在电脑上使用CUDA&#xff08;NVIDIA的并行计算平台和API&#xff09;&#xff0c;需要进行以下配置和准备&#xff1a; 1. 检查NVIDIA显卡支持 确保你的电脑拥有支持CUDA的NVIDIA显卡。 可以在NVIDIA官方CUDA支持显卡列表中查看显卡型号是否支持CUDA。 2. 安装NVIDIA显卡驱动…

基于新年视角下的城市人流数据分析

2025年新年~~~ 旅游消费似乎又成为城市活力的动力话题。 透过话题看数据&#xff0c;透过数据看结果&#xff0c;无非是从--人流量--到--人留量&#xff0c;能不能留下人&#xff0c;能否因人而产生消费。 基于这个角度&#xff0c;地方政府经营城市的商业模式本质则是为城市…

数据分析系列--[12] RapidMiner辨别分析(含数据集)

一、数据准备 二、导入数据 三、数据预处理 四、建模辨别分析 五、导入测试集进行辨别分析 一、数据准备 点击下载数据集 二、导入数据 三、数据预处理 四、建模辨别分析 五、导入测试集进行辨别分析 Ending, congratulations, youre done.

【深度分析】DeepSeek 遭暴力破解,攻击 IP 均来自美国,造成影响有多大?有哪些好的防御措施?

技术铁幕下的暗战&#xff1a;当算力博弈演变为代码战争 一场针对中国AI独角兽的全球首例国家级密码爆破&#xff0c;揭开了数字时代技术博弈的残酷真相。DeepSeek服务器日志中持续跳动的美国IP地址&#xff0c;不仅是网络攻击的地理坐标&#xff0c;更是技术霸权对新兴挑战者的…

【数据采集】案例01:基于Scrapy采集豆瓣电影Top250的详细数据

基于Scrapy采集豆瓣电影Top250的详细数据 Scrapy 官方文档:https://docs.scrapy.org/en/latest/豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:基于Scrapy框架采集豆瓣电影Top250的详细数据。 电脑系统:Windows 使用软件:PyCharm、Navicat Python…

设计模式 - 行为模式_Template Method Pattern模板方法模式在数据处理中的应用

文章目录 概述1. 核心思想2. 结构3. 示例代码4. 优点5. 缺点6. 适用场景7. 案例&#xff1a;模板方法模式在数据处理中的应用案例背景UML搭建抽象基类 - 数据处理的 “总指挥”子类定制 - 适配不同供应商供应商 A 的数据处理器供应商 B 的数据处理器 在业务代码中整合运用 8. 总…