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

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;

    // 设置字段宽度为10
    cout << setw(10) << a << endl;
    cout << setw(10) << b << endl;
    cout << setw(10) << c << endl;

    return 0;
}

输出

         1
       123
      4567

详细解释

  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;
}

输出

         1
       123
      4567
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.23
  123.46
 4567.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.kler.cn/a/524039.html

相关文章:

  • 渗透测试之WAF规则触发绕过规则之规则库绕过方式
  • 网络工程师 (7)进程管理
  • SpringBoot统一数据返回格式 统一异常处理
  • 蓝桥杯例题四
  • 【Linux笔记】Day4
  • BOM对象location与数组操作结合——查询串提取案例
  • 智能化加速标准和协议的更新并推动验证IP(VIP)在芯片设计中的更广泛应用
  • vim交换文件的工作原理
  • 知网爬虫,作者、摘要、题目、发表期刊等主要内容的获取
  • 文章分类列表查询功能
  • 詳細講一下RN(React Native)中的列表組件FlatList和SectionList
  • 第25章 项目启航前的密谈
  • 基于容器本地化开发与交付的实践
  • 【开源免费】基于SpringBoot+Vue.JS在线考试学习交流网页平台(JAVA毕业设计)
  • ProGen生成功能蛋白序列
  • 蓝桥杯python语言基础(3)——循环结构
  • Linux 非阻塞IO
  • 《Memory Barriers a Hardware View for Software Hackers》阅读笔记
  • 【Linux】Linux C比较两个 IPv6 网关地址是否相等,包括前缀
  • SpringBoot-Vue整合百度地图
  • Attention Free Transformer (AFT)-2020论文笔记
  • 适配器模式——C++实现
  • 人工智能在医疗领域的应用有哪些?
  • LeetCode - #196 删除重复的电子邮件并保留最小 ID 的唯一电子邮件
  • 漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)
  • C#@符号在string.Format方法中作用