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

收藏加关注,观看不迷路

相关推荐
Icomi_1 小时前
【神经网络】0.深度学习基础:解锁深度学习,重塑未来的智能新引擎
c语言·c++·人工智能·python·深度学习·神经网络
不知道取啥耶2 小时前
C++ 滑动窗口
数据结构·c++·算法·leetcode
zephyr_zeng3 小时前
VsCode + EIDE + OpenOCD + STM32(野火DAP) 开发环境配置
c语言·c++·vscode·stm32·单片机·嵌入式硬件·编辑器
Stack Overflow?Tan904 小时前
c++实现在同一台主机两个程序实现实时通信
开发语言·c++
@@永恒5 小时前
map&set
c++
小鹏编程5 小时前
【C++教程】C++中的基本数据类型
开发语言·c++·教程·少儿编程
熊峰峰5 小时前
C++第十节:map和set的介绍与使用
开发语言·c++
Antonio9155 小时前
【网络编程】事件选择模型
网络·c++
程序员Linc6 小时前
用OpenCV写个视频播放器可还行?(C++版)
c++·opencv·音视频·opencv 4.11
决斗小饼干6 小时前
并发编程知识总结
c++