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

 

 

                                 收藏加关注,观看不迷路

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/961299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

06_改善播放效果--优先级与阻塞

一、声明 本文章的程序是基于05篇的程序改善的&#xff0c;所以CubeMx的配置看05篇的就好 且此篇文章由于红外遥控暂时未使用&#xff0c;还不知其是否能成功显示现象 二、keil5代码 这个优先级要1&#xff0c;但是如果只是这个优先级1的话&#xff0c;那么我的LED灯闪烁的任务…

【Rust自学】16.3. 共享状态的并发

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 16.3.1. 使用共享来实现并发 还记得Go语言有一句名言是这么说的&#xff1a;Do not commun…

项目集成Nacos

文章目录 1.环境搭建1.创建模块 sunrays-common-cloud-nacos-starter2.目录结构3.pom.xml4.自动配置1.NacosAutoConfiguration.java2.spring.factories 5.引入cloud模块通用依赖 2.测试1.创建模块 sunrays-common-cloud-nacos-starter-demo2.目录结构3.pom.xml4.application.ym…

计算机网络 (59)无线个人区域网WPAN

前言 无线个人区域网&#xff08;WPAN&#xff0c;Wireless Personal Area Network&#xff09;是一种以个人为中心&#xff0c;采用无线连接方式的个人局域网。 一、定义与特点 定义&#xff1a;WPAN是以个人为中心&#xff0c;实现活动半径小、业务类型丰富、面向特定群体的无…

Python 之 Excel 表格常用操作

示例文件 test.xlsx 将各个表单拆分成单独的 Excel 文件 import os.pathimport openpyxl import pandasdef handle_excel(file_path):dirname os.path.dirname(file_path)basename os.path.basename(file_path).split(".")[0]wb openpyxl.load_workbook(file_pat…

01学习预热篇(D6_正式踏入JVM深入学习前的铺垫)

目录 学习前言 一、虚拟机的结构 1. Java虚拟机参数设置 2. java 堆 3. 出入栈 4. 局部变量表 1> 局部变量的剖析 2> 局部变量的回收 5. 操作数栈 1> 常量入栈指令 2> 局部变量值转载到栈中指令 3> 将栈顶值保存到局部变量中指令 6. 帧数据区 7. 栈…

知识库建设对提升团队协作与创新能力的影响分析

内容概要 在当今快速变革的商业环境中&#xff0c;知识库建设的重要性愈发凸显。它不仅是信息存储的载体&#xff0c;更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识&#xff0c;团队成员能够便捷地访问相关信息&#xff0c;使得协作过程更为流畅&#xff0c;…

C语言字符串详解

1. C语言中的字符串基础 C语言中的字符串是程序设计中不可忽视的部分。与现代高级编程语言不同&#xff0c;C语言对字符串的处理方式直接、灵活&#xff0c;并且强大。在C语言中&#xff0c;字符串并不是一种特殊的数据类型&#xff0c;而是字符数组的一种表现形式。字符串通常…

神经网络的通俗介绍

人工神经网络&#xff0c;是一种模仿人类大脑工作原理的数学模型。人类的大脑是由无数的小“工作站”组成的&#xff0c;每个工作站叫做“神经元”。这些神经元通过“电线”互相连接&#xff0c;负责接收、处理和传递信息。 一、人类大脑神经网络 人类大脑的神经网络大概长这…

SpringBoot中Excel表的导入、导出功能的实现

文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…

vim交换文件的工作原理

在vim中&#xff0c;交换文件是一个临时文件&#xff0c;当我们使用vim打开一个文件进行编辑&#xff08;一定得是做出了修改才会产生交换文件&#xff09;时候&#xff0c;vim就会自动创建一个交换文件&#xff0c;而之后我们对于文件的一系列修改都是在交换文件中进行的&…

C++/stack_queue

目录 1.stack 1.1stack的介绍 1.2stack的使用 练习题&#xff1a; 1.3stack的模拟实现 2.queue的介绍和使用 2.1queue的介绍 2.2queue的使用 2.3queue的模拟实现 3.priority_queue的介绍和使用 3.1priority_queue的介绍 3.2priority_queue的使用 欢迎 1.stack 1.1stack…

5分钟带你获取deepseek api并搭建简易问答应用

目录 1、获取api 2、获取base_url和chat_model 3、配置模型参数 方法一&#xff1a;终端中临时将加入 方法二&#xff1a;创建.env文件 4、 配置client 5、利用deepseek大模型实现简易问答 deepseek-v3是截止博文撰写之日&#xff0c;无论是国内还是国际上发布的大模型中…

机器学习day4

自定义数据集 使用pytorch框架实现逻辑回归并保存模型&#xff0c;然后保存模型后再加载模型进行预测 import numpy as np import torch import torch.nn as nn import torch.optim as optimizer import matplotlib.pyplot as pltclass1_points np.array([[2.1, 1.8],[1.9, 2…

58.界面参数传递给Command C#例子 WPF例子

界面参数的传递&#xff0c;界面参数是如何从前台传送到后台的。 param 参数是从界面传递到命令的。这个过程通常涉及以下几个步骤&#xff1a; 数据绑定&#xff1a;界面元素&#xff08;如按钮&#xff09;的 Command 属性绑定到视图模型中的 RelayCommand 实例。同时&#x…

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具&#xff0c;旨在通过自然语言交互和强大的算法能力&#xff0c;帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户&#xff0c;使数据分析变得简单高效。 核心功能 自然语言交互&#x…

【JavaEE进阶】应用分层

目录 &#x1f38b;序言 &#x1f343;什么是应用分层 &#x1f38d;为什么需要应用分层 &#x1f340;如何分层(三层架构) &#x1f384;MVC和三层架构的区别和联系 &#x1f333;什么是高内聚低耦合 &#x1f38b;序言 通过上⾯的练习,我们学习了SpringMVC简单功能的开…

在 Ubuntu22.04 上安装 Splunk

ELK感觉太麻烦了&#xff0c;换个日志收集工具 Splunk 是一种 IT 工具&#xff0c;可帮助在任何设备上收集日志、分析、可视化、审计和创建报告。简单来说&#xff0c;它将“机器生成的数据转换为人类可读的数据”。它支持从虚拟机、网络设备、防火墙、基于 Unix 和基于 Windo…

ES设置证书和创建用户,kibana连接es

1、启动好es 2、进入es容器 docker exec -it es /bin/bash 3、生成ca证书 ./bin/elasticsearch-certutil ca 注&#xff1a;两个红方框位置直接回车 4、生成cert证书 ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 注&#xff1a;前两个红框直接回车&am…

python + ollama 手敲实现私有大模型知识库

在不依赖 LangChain、LlamaIndex 等框架&#xff0c;以及各种知识问答软件的情况下&#xff0c;尽量减少第三方库的使用&#xff0c;仅通过 Ollama 和 NumPy 两个外部库来实现 RAG&#xff08;Retrieval-Augmented Generation&#xff09;应用。 一、安装python 下载&#xf…