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

目录

四种操纵符简要介绍

setprecision基本用法

setfill的基本用法

fixed的基本用法

setw基本用法

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

[1. 设置字段宽度和填充字符](#1. 设置字段宽度和填充字符)

[2. 设置字段宽度和对齐方式](#2. 设置字段宽度和对齐方式)

[3. 设置字段宽度和精度](#3. 设置字段宽度和精度)

[4. 设置字段宽度和填充字符,结合对齐方式](#4. 设置字段宽度和填充字符,结合对齐方式)

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

总结

收藏加关注,观看不迷路


四种操纵符简要介绍

setw 是 C++ 中用于控制输出格式的操纵符,它用于设置输出字段的宽度,默认右对齐。当输出值的字符数少于指定的字段宽度时,剩余的部分默认用空格填充,或其他指定的填充字符填充。setw 的作用是确保输出值占据指定的宽度,从而实现对齐和格式化输出。
setfill 是 C++ 中用于控制输出格式的操纵符,它用于设置填充字符。当输出字段的宽度大于实际输出值的字符数时,setfill 指定的字符将用来填充剩余的空间,常与setw结合使用。默认的填充字符是空格。
setprecision 是 C++ 中用于控制浮点数输出精度的操纵符。它通常与 iostream 库一起使用,用于设置浮点数输出时小数点后的位数。setprecision 的作用是设置后续浮点数输出的精度,直到下一次改变精度为止。
fixed 是 C++ 中用于设置浮点数输出格式的操纵符。它用于指定浮点数以固定小数点格式输出,而不是科学计数法格式。fixed 通常与 setprecision 一起使用,以控制小数点后的位数。

setprecision基本用法

cpp 复制代码
#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;
}

输出

cpp 复制代码
123.457
123.45679

详细解释

  1. setprecision(n):

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

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

  2. 精度设置的范围:

    • setprecision 设置的精度范围包括小数点后的所有数字,但不包括小数点前的数字。
  3. 四舍五入:

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

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

setfill的基本用法

cpp 复制代码
#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;
}

输出

cpp 复制代码
*********1
*******123
******4567

详细解释

  1. setfill(char):

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

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

  2. setw(int):

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

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

  3. 填充字符的作用:

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

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

fixed的基本用法

cpp 复制代码
#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;
}

输出

cpp 复制代码
123.457
123.45679

详细解释

  1. fixed:

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

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

  2. setprecision(n):

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

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

  3. 四舍五入:

    • 当设置的精度小于实际小数位数时,setprecision 会自动进行四舍五入。
  4. 默认格式:

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

setw基本用法

cpp 复制代码
#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;
}

输出

cpp 复制代码
         1
       123
      4567

详细解释

  1. setw(int):

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

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

  2. 字段宽度的作用:

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

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

  3. 对齐方式:

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

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

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

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

cpp 复制代码
#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;
}

输出

cpp 复制代码
*********1
*******123
******4567

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

cpp 复制代码
#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;
}

输出

cpp 复制代码
         1
       123
      4567
1        
123      
4567     

3. 设置字段宽度和精度

cpp 复制代码
#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;
}

输出

cpp 复制代码
    1.23
  123.46
 4567.89

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

cpp 复制代码
#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;
}

输出

cpp 复制代码
*********1
*******123
******4567
1*********
123*******
4567******

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

cpp 复制代码
#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;
}

输出

cpp 复制代码
********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输出,无需上述操纵符。

收藏加关注,观看不迷路

相关推荐
被AI抢饭碗的人7 小时前
c++:vector
开发语言·c++
_zwy7 小时前
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
linux·运维·c++·深度学习·神经网络
qystca7 小时前
【16届蓝桥杯寒假刷题营】第2期DAY4
数据结构·c++·算法·蓝桥杯·哈希
Xzh04238 小时前
c语言网 1127 尼科彻斯定理
数据结构·c++·算法
qystca10 小时前
【16届蓝桥杯寒假刷题营】第2期DAY5
c++·算法·蓝桥杯·贡献度
这是我5810 小时前
链表的介绍
数据结构·c++·其他·链表·visual studio·介绍·图文结合
涛ing11 小时前
29. C语言 可变参数详解
linux·服务器·c语言·c++·windows·vscode·visual studio
智能与优化11 小时前
Windows 程序设计6:错误码的查看
开发语言·c++·windows
Golinie11 小时前
【C++高并发服务器WebServer】-10:网络编程基础概述
linux·服务器·网络·c++·socket
taoyong00115 小时前
代码随想录算法训练营第三十九天-动态规划-198. 打家劫舍
c++·算法·leetcode·动态规划