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

【C++】cout的格式输出

目录

  • 一、cout的格式输出
    • 1、控制宽度和填充
    • 2、控制数值格式
    • 3、控制整数格式
    • 4、控制对齐方式

在这里插入图片描述

个人主页<—请点击
C++专栏<—请点击

一、cout的格式输出

printf函数在输出数据的时候,可以指定格式来输出,比如:指定宽度、指定小数点后的位数、对齐方式等等。那么cout在数据的时候能否指定格式呢?也是可以的,cout结合<iomanip> (IO manipulators)头文件中的操纵符,可以灵活控制输出格式,从而满足各种格式化需求。

1、控制宽度和填充

setw:设置字段宽度(只对紧接着的输出项有效)setfill:设置填充字符。这两个函数都在<iomanip>头文件下。

代码段定义一个整型a,并以默认、设置宽度、设置宽度及填充字符展示:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int a = 100;cout << a << endl;cout << setw(10) << a << endl;cout << setw(10) << setfill('0') << a << endl;return 0;
}

运行结果
在这里插入图片描述
注意setw设置的字段宽度只对紧接着的输出项有效,例如:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int a = 100;double b = 3.14;cout << a << endl;cout << setw(10) << a << b << endl;return 0;
}

在这里插入图片描述

2、控制数值格式

fixed:以固定小数点表示浮点数设置后就不会以科学计数法展示了
scientific:以科学计数法表示浮点数
setprecision:设置浮点数的精度,以控制小数点后的数字位数,⼀般先固定小数点,再设置精度。
其中setprecision<iomanip>的头文件下。

我们以小数3.141592653589793来进行演示:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{double pi = 3.141592653589793;cout << pi << endl;return 0;
}

运行结果
在这里插入图片描述
从运行结果上,我们可知默认情况下的输出是有小数点位数限制的,为了输出格式可以让我们控制,C++中才有了这些函数。

默认情况fixed的情况:

double pi = 3.141592653589793;
cout << pi << endl;
cout << fixed << pi << endl;

运行结果
在这里插入图片描述
fixed是以固定小数点表示浮点数,上图不明显,我们看下图:
在这里插入图片描述
默认情况scientific的情况:

double pi = 3.141592653589793;
cout << pi << endl;
cout << scientific << pi << endl;

运行结果
在这里插入图片描述
打印出来的结果是以科学计数法表示的,也就是3.141493*100

默认情况setprecision的情况:

double pi = 3.141592653589793;
cout << pi << endl;
cout << setprecision(3) << pi << endl;

运行结果
在这里插入图片描述
这里用了setprecision显示的是3.14,但()中是3,所以此时的3默认是有效数字,但我们的本意是保留三位小数,这时我们在前面加上fixed就好了。

注意:在不使用fixed的情况下,setprecision的行为在不同编译器和系统上可能会导致输出差异。

double pi = 3.141592653589793;
cout << pi << endl;
cout << fixed << setprecision(3) << pi << endl;

运行结果
在这里插入图片描述

3、控制整数格式

  • dec:以十进制格式显示整数(默认)
  • hex:以十六进制格式显示整数。
  • oct:以八进制格式显示整数。
int a = 21;
cout << "    默认: " << a << endl;
cout << "  十进制: " << dec << a << endl;
cout << "十六进制: " << hex << a << endl;
cout << "  八进制: " << oct << a << endl;

在这里插入图片描述

4、控制对齐方式

left:左对齐,right:右对齐(默认)

int a = 121;
cout << "  默认:" << setw(5) << a << "#" << endl;
cout << "左对齐:" << setw(5) << left << a << "#" << endl;
cout << "右对齐:" << setw(5) << right << a << "#" << endl;

运行结果
在这里插入图片描述

总结:
以上就是本期博客分享的全部内容啦!如果觉得文章还不错的话可以三连支持一下,你的支持就是我前进最大的动力!
技术的探索永无止境! 道阻且长,行则将至!后续我会给大家带来更多优质博客内容,欢迎关注我的CSDN账号,我们一同成长!
(~ ̄▽ ̄)~

相关文章:

  • 特斯拉AI布局:从自动驾驶到人形机器人的野心
  • (网络)应用层协议-HTTPS
  • 想实现一个基于MCP的pptx生成系统架构图【初版实现】
  • 前端面试宝典---webpack面试题
  • 链表面试题7之相交链表
  • bunsenlabs系统详解
  • 【DeepSeek问答记录】请结合实例,讲解一下pytorch的DataLoader的使用方法
  • 详解RabbitMQ工作模式之发布确认模式
  • 知名人工智能AI培训公开课内训课程培训师培训老师专家咨询顾问唐兴通AI在金融零售制造业医药服务业创新实践应用
  • 【Redis实战篇】分布式锁-Redisson
  • 星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)
  • 数据资产化浪潮已至,企业如何解锁数据金矿?
  • Linux系统管理与编程20:Apache
  • 24、DeepSeek-V3论文笔记
  • QT开发技术 【元对象系统反射机制高级用法】 二
  • JDK动态代理和CGLIB动态代理的区别?
  • suricata增加单元测试编译失败
  • 3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】
  • STM32 变量存储
  • window 显示驱动开发-指定 DMA 缓冲区的段
  • 网信部门曝光网络谣言典型案例,“AI预测彩票号码百分百中奖”等在列
  • A股三大股指集体高开
  • 阶跃星辰CEO姜大昕:追求智能上限仍是最重要的事,多模态的“GPT-4时刻”尚未到来
  • 国家发改委:美芯片药品等领域关税影响全球科技发展,损害人类共同利益
  • 中国天主教组织发贺电对新教皇当选表示祝贺
  • 加力、攻坚、借力、问效,上海为优化营商环境推出增量举措