cout格式化输出 详解

【C++】格式化输出详解:掌握 cout 的进阶用法 在编写 C++ 程序时,cout 是我们用来输出信息的基础工具。然而,仅仅使用 cout 进行简单的输出往往难以满足复杂应用场景的需求。我们需要深入掌握各种格式化输出的技巧,以便更精确地控制输出,适应各类场合的需求。在本文中,我们将系统性地探讨如何使用 C++ 提供的 头文件及相关操纵符来灵活控制输出格式,包括对齐方式、数值表示方式、宽度管理等方面,帮助你更好地呈现数据,使代码输出更加规范和具有可读性。 2024.12.5-✍39min 阅读详情

//<iostream>在使用setf等库函数时使用
//<iomanip>在使用流操纵算子时使用
//using namespace std;

 

//以下所有的setf()都有对应的unsetf()用于取消设置
//所有的setiosflags()可以用resetiosflags()取消
//标志位fmtflags的命名空间可以使用ios_base::或者ios::

//方法setf()返回调用它之前有效的格式化设置

//ios_base::fmtflags 是存储这种信息所需的数据类型名称

//ios_base::fmtflags initial;声明一个用于储存格式化信息的变量

//initial=cout.setf(ios_base::fixed);得到初始化格式信息

//cout.setf(initial);恢复到原始格式

int laneri = 12345;
double lanerd = 56789;

//1、设置整数进制输出
//重载1:fmtflags ios_base::setf(fmtflags _Mask);
//重载2:fmtflags ios_base::setf(fmtflags _Mask, fmtflags _Unset);
//使用重载1的时候,一定要先取消当前基,之后才可以设置新的基
//使用重载2的时候,第二个参数设为当前的基,或者当不知道当前基时,设为ios_base::basefield清除当前的所有可能的基
//可使用的标志:ios::dec, ios::oct, ios::hex, ios::basefield(= dec|oct|hex)
cout.unsetf(ios::dec);   //等价1
cout.setf(ios::hex);
cout.setf(ios::hex, ios_base::basefield); //等价2
cout<<laneri<<endl;
cout<<setiosflags(ios::hex)<<laneri<<endl; //等价3
cout<<std::hex<<laneri<<endl;   //等价4

//使用输入输出操纵符也能有等价效果(命名空间使用std::,否则会有多余的字符),注意这种方法其实不止对本句生效

//2、 显示进制前导字符(0、0x)
cout.setf(ios::showbase);
cout<<setiosflags(ios::showbase)<<laneri<<endl;
cout<<std::showbase<<laneri<<endl;

//3、使用科学记数法
//只对数据类型为小数的变量有效(或者字面值是小数)
//对precision有影响(详见precision的说明)
//对ios::fixed有影响(详见fixed的说明),但不会被fixed影响

cout.setf(ios::scientific);
cout<<lanerd<<endl;
cout<<setiosflags(ios::scientific)<<lanerd<<endl;
cout<<std::scientific<<lanerd<<endl;

//4、设置小数的浮点/定点显示方式
//主要依靠precision体现(详见precision的说明)
//当设置了ios::scientific标志时,ios::fixed会受到影响,std::fixed不会

cout.setf(ios::fixed);
cout<<lanerd<<endl;
cout<<setiosflags(ios::fixed)<<lanerd<<endl;
cout<<std::fixed<<lanerd<<endl;

//5、设置小数数据类型的显示精度,受到scientific和fixed的影响
//当设置(fixed | scientific)时,precision(n)表示小数点后固定显示n位小数
//当不设置(fixed & scientific)时,precision(n)表示固定显示n位数字
// 其中,当是整数且位数m小于n,而又没有设置showpoint的时候,只显示m位整数。例如:precision(3),12->12
// 其中,当是整数且位数p大于n,无论设置showpoint与否,都四舍五入后使用科学计数法。例如:precision(3),1234->1.23e+003

cout.precision(3);
cout<<lanerd<<endl;
cout<<setprecision(3)<<3.1415926<<endl;
  
//6、强制浮点数类型变量的小数点显示
//如果是整数,大于precision宽度时使用科学计数法,小于precision则小数点后面补0,等于precision时显示小数点但无小数
//例:不设fixed,precision(6): 1234567->1.23457E+006;   12345->12345.0;    123456->123456.
//  设fixed,precision(6): 1234567->1234567.000000; 12345->12345.000000; 123456->123456.000000

cout.setf(ios::showpoint);
cout<<setiosflags(ios::showpoint)<<lanerd<<endl;
cout<<std::showpoint<<lanerd<<endl;

//7、设置屏幕上的最小显示宽度
//实际字符数大于等于这个数字,显示全部;小于这个数字,用fill()设置的字符来填充其他占位符
//注意:宽度设置只对下一个"<<"输出有效
//例如:cout<<setw(10)<<right<<"laner"<<"linke";只有"laner"是占10个字符,linke不是
cout.width(12);

cout<<setw(12)<<3.14<<endl;

//8、显示对齐方式,默认为左对齐
cout.setf(ios::right);
cout<<setiosflags(ios::right)<<laneri<<endl;
cout<<std::right<<6.28<<endl;

//9、设置不足显示宽度时的填充字符,默认为' '
cout.fill('*');
cout<<setfill('$')<<laneri<<endl;

=====================================================================

//附:ios_base::fmtflags
/*
*dec, to insert or extract integer values in decimal format.
*hex, to insert or extract integer values in hexadecimal format.
*oct, to insert or extract integer values in octal format.
*showbase, to insert a prefix that reveals the base of a generated integer field.
*internal, to pad to a field width as needed by inserting fill characters at a point internal to a generated numeric field. (For information on setting the field width, see setw).
*left, to pad to a field width as needed by inserting fill characters at the end of a generated field (left justification).
*right, to pad to a field width as needed by inserting fill characters at the beginning of a generated field (right justification).
*boolalpha, to insert or extract objects of type bool as names (such as true and false) rather than as numeric values.
*fixed, to insert floating-point values in fixed-point format (with no exponent field).
*scientific, to insert floating-point values in scientific format (with an exponent field).
*showpoint, to insert a decimal point unconditionally in a generated floating-point field.
*showpos, to insert a plus sign in a nonnegative generated numeric field.
*skipws, to skip leading white space before certain extractions.
*unitbuf, to flush output after each insertion.
*uppercase, to insert uppercase equivalents of lowercase letters in certain insertions.
--------------------------------
*adjustfield, a bitmask defined as internal | left | right
*basefield, defined as dec | hex | oct
*floatfield, defined as fixed | scientific
*/

=====================================================================

 

 

来自: http://hi.baidu.com/hankcs/blog/item/3ea53a3c664d550cbba16765.html

C++ cout输出流详解:从基础打印到格式化与调试实战 在C++编程中,标准输出是程序与外界交互的基础,也是调试和观察程序状态的核心手段。其背后的核心机制是流(Stream)操作,它通过操作符重载实现了类型安全,避免了传统C语言printf函数可能出现的类型不匹配风险。流操作的价值在于其直观的链式调用和与C++标准库的无缝集成,为后续学习文件流、字符串流等高级I/O操作奠定了统一基础。在实际应用场景中,开发者不仅需要掌握基本的数据输出,更要熟练运用格式化控制来美化数据展示,例如通过iomanip库设置精度、宽度和对齐方式。同时,理解缓冲区机制对于处理输出顺序、性 阅读详情

相关推荐

Windows 下安装 Hermes Agent 完整教程(含踩坑记录)

不支持原生 Windows,必须通过 WSL2 (Windows Subsystem for Linux 2) 运行。WSL2 是 Windows 内置的 Linux 兼容层,可以在 Windows 上运行完整的 Linux 环境。

weixin_50191542的博客 4275

C++ 中的 cout.setf() 函数

代码cout.setf(ios_base::fixed, ios_base::floatfield)怎么解释? C++中通过cout来实现格式输出,就类似于C语言中通过printf()来实现格式输出。cout.setf()的作用是通过设置格式标志来控制输出形式,其中ios_base::fixed表示:用正常的记数方法显示浮点数(与科学计数法相对应);ios_base::floatfield表示小

白水的博客 5万+

STM32H743IIT6+USB3300高速HID通讯实战:从CUBEMX配置到调试避坑全记录

本文详细记录了基于STM32H743IIT6微控制器与USB3300 PHY芯片实现高速USB HID通信的完整实战过程。内容涵盖从硬件选型、STM32CubeMX工程配置(重点规避引脚映射等常见陷阱)、自定义报告描述符编写,到驱动层数据收发实现与高级调试技巧的全链路解析,旨在帮助开发者快速构建稳定、高效的嵌入式高速数据通道。

vscode5coder的博客 363

C++中cout.setf()函数

C++中cout.setf(ios::left,ios::adjustfield); cout.setf(ios::showpoint,ios::showpint); cout.setf(ios::scientific,ios::floatfield); 分别表示什么 参考以下: 1.使用控制符控制输出格式 控制符 作用  dec 设置整数的基数为10  hex 设置整数的基

荪荪的博客 3万+

TOEIC托业词汇汇总(完整版)

1.appointment 约会,约定2.attendance 出席人数;出席3.cabinet 橱柜4.calendar 日历;月历;行事历5.clerk 办事员,书记6.directory 人名住址薄7.duplicte 复制;副本8.filing 归档9.in-tray 待处理文件盒10.monitor 检测;监视;追踪11.out-tray 已处理文件盒12.partition 分隔;分隔物(如墙壁等)13.postage 邮费。

weixin_39676449的博客 1万+

快速搭建SpringBoot3+Vue3+ElementPlus管理系统

快速搭建SpringBoot3+Vue3管理系统前端项目搭建(默认开发环境:node20,Jdk17)创建项目并下载依赖--执行以下命令 前端项目搭建(默认开发环境:node20,Jdk17) 创建项目并下载依赖–执行以下命令 创建项目 yarn create vite admin-vue --template 2.下载依赖(也可按需下载) yarn add echarts --save yarn add vue-router --save yarn add element-plus --save y

adingyb的博客 2817

cout.setf()

cout用来实现格式输出,类似于C语言中通过printf()。 cout.setf()的作用是通过设置格式标志来控制输出形式,如,其中ios_base::fixed表示:用正常的记数方法显示浮点数(与科学计数法相对应);ios_base::floatfield表示小数点后保留6位小数。 setf()函数有两个原型: fmtflags setf(fmtflage) //第一原型 f...

weixin_30649859的博客 588

自举电容的工作原理-3句话总结

1、一道面试题 照例,先抛出来一道面试题:“Buck电路的SW引脚通常会放置一颗小电容,这颗电容有什么用?”。这个问题问得比较细,非常考验被面试者的硬件基本功。 2、似懂非懂的答案 有小伙伴可能不太清楚这颗电容的作用,回答不上来。也有小伙伴脱口而出:自举电容,用来做升压的。但后面好像说不出来具体逻辑。 没具体了解过,答不上来,也没啥可惜的。但是了解过一点,但又似懂非懂的这种,给出的答案只是轻轻点水或者千篇一律,那无疑是错过了一个加分项。 3、异步Buck的自举环路组成 既然是针对Buck电路讲自举电容,前面

ltqdxl的博客 3万+

C++ cout.setf() 格式化输出

学过C语言的都知道 ,对于C语言的格式化输出很简单的,毕竟是面向过程的语言. 例如: 输出特定的位数: float a = 10.0; printf("%3.3f",a); 输出的结果就是10.000了. 3.3的含义就是: 对于第一个3 没啥作用,对于小数点后的3代表 小数点后保留三位.在这里就不在列举其他的了,有兴趣的可以试试其他书.下面我们进入正题. setf()有两种原型,分别...

fly_sky_share的博客 1698

用 OData V2 元数据驱动表格体验:SAP UI5 Smart Table 全面解析

摘要: Smart Table是SAPUI5中基于OData元数据自动生成表格的控件,支持个性化、排序、过滤等高级功能。文章从九个维度深入解析其工作机制:1)通过元数据和注解自动生成列;2)支持多种表格类型;3)关键属性的静态化特性;4)与其他智能控件的协同;5)导航属性和导出的处理;6)响应式设计;7)个性化配置;8)性能优化策略;9)端到端实现案例。Smart Table通过读取OData元数据自动完成表格渲染,大幅减少开发工作量,特别适合企业级应用开发场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 321

Open3D 曲率下采样

曲率下采样是一种基于几何特征的点云处理技术,通过计算每个点的曲率来判断其所在位置的局部表面特征,从而进行选择性保留。曲率的计算通常基于点的法向量和其邻域点的分布。

纵马踏花向自由 841

C++固定格式输出:cout.setf(........)

/命令cout显示true和false。

m0_68731112的博客 726

RAP 通用搜索实战:用 CDS 注解打造 Fiori Elements 的一体化检索体验

RAP应用中的通用搜索优化实践:通过CDS注解实现高效模糊匹配 摘要:本文介绍了在SAP RAP应用中优化列表搜索体验的方法。通过CDS注解配置通用搜索功能,用户无需指定字段即可在多字段中模糊匹配数据。关键实现包括:1)使用@Search.searchable启用全局搜索;2)通过@Search.defaultSearchElement标记核心搜索字段;3)利用@Search.fuzzinessThreshold设置容错阈值(0.7-1.0)处理拼写错误;4)使用@Search.ranking优化结果排序。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1398

c 语言的输出函数cout,详解C++ cout格式化输出完全攻略

写算法题的时候突然发现自己忘记基本的C++:cout格式化输出了,赶紧拉出以前的C++学习笔记重新看一看。部分内容来自教程:C语言中文网(一个很棒的网站)有时希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。C语言中的 printf() 函数使用以%开头的格式控制符,例如 %X、%.2f、%6d 等;C...

weixin_42298826的博客 6082

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

详解C++ cout格式化输出完全攻略

有时希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。需要注意的是,setw() 算子所起的作用是一次性的,即只影响下一次输出。因此可以看到,第 9) 行的输出因为没有使用 setw(),输出的宽度就不再是前面指定的 12 个字符。setiosflags() 算子实际上是一个库函数,它以一些标志作为参数,这些标志可以是在 iostream 头文件中定义的以下几种取值,它们的含义和同名算子一样。

raoxiaoz0425的博客 25

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c++ cout格式化输出函数详解

为什么80%的码农都做不了架构师?>>> ...

weixin_34364071的博客 1399

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

cout 格式化输出详解

本文转自:http://hi.baidu.com/hankcs/blog/item/3ea53a3c664d550cbba16765.html //在使用setf等库函数时使用 //在使用流操纵算子时使用 //using namespace std; //以下所有的setf()都有对应的unsetf()用于取消设置 //所有的setiosflags()可以用resetiosflags

godenlove007的专栏 1132

C++格式化输出详解:从洛谷P5714肥胖问题看cout默认精度与有效数字

在编程实践中,格式化输出是基础且关键的技术环节,尤其在算法竞赛和在线评测系统中,输出格式的细微差异直接决定程序能否通过。其核心原理在于控制数据在终端或文件中的呈现形式,包括数字精度、对齐方式、进制转换等。掌握格式化输出技术,不仅能提升代码的严谨性和可读性,更是解决实际问题的必备技能。在C++中,标准输出流cout的默认行为、有效数字与小数位数的区别、以及iomanip库中setprecision、fixed等操作符的用法,构成了格式化输出的技术基石。这些知识广泛应用于数据处理、科学计算、日志记录等场景。本文

clhq71932的博客 370

OpenCompass 数据集单元测试编写指南:从 load 方法到 CascadeEvaluator 结果校验

本指南基于仓库内 [tests/TESTING_GUIDE.md](https://link.gitcode.com/i/4c3e034f5c0cf7f1ad37a93d3de966ff) 文档,系统讲解如何为 `opencompass/datasets/` 下的数据集实现编写单元测试。你将掌握测试目录组织、五大测试覆盖维度(Loader / Reader / Postprocessor / Ev

gitblog_01128的博客 810

c++ 总结之 cout输出

cout知识总结,学习cout的输出方法,学习各种格式化输出的法一法二。修改显示时的布尔类型、位宽、精度、浮点数模式、对齐方式、前缀、进制等等的零碎知识已经帮你整理好啦。

weixin_60634144的博客 2万+

cout格式化输出

在C语言中,我们一般用printf()函数来进行输出,通过输出字符串中的格式说明符(如%4.2d)可以很容易地格式化输出。而在C++中,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时也需要数据按我们指定的格式输出,比如以十六进制的形式输出一个整数等。有两种方法可以达到格式化输出的目的,一种是使用流对象的有关成员函数,还有一种是使用控制符方法,这两种方法殊途同归,它们的原

u012707739的博客 1万+

C++ cout格式化输出(超级详细)

C++ cout格式化输出(超级详细) 在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留 2 位小数,再比如以十六进制的形式输出整数,等等。 对于学过 C 语言的读者应该知道,当使用 printf() 函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如 %.2f 表示输出浮点数时保留 2 位小数,%#X 表示以十六进制、带 0X 前缀的方式输出整数。 C++ 通常使用 cout 输出数据,和 printf() 函数相比,cout 实现格式化输出数

ccc369639963的博客 3万+

(十)C++学习 | 输入输出流

C++学习 | 输入输出流

Skies_的博客 855

c++ cout 格式化输出示例

c++ cout 格式化输出示例 本文来自:http://hi.baidu.com/czlaner/blog/item/b8544f381f64172db8998fdf.html //在使用setf等库函数时使用 //在使用流操纵算子时使用 //using namespa

mal327的专栏 7741

cout 格式化的一些方法

cout格式化的方式有很多,和C中的printf相比较,在实现方式上更加容易理解。 1、计数进制。   1、十六进制:hex   2、八进制:oct   3、十进制:dec(默认)   在控制进制的时候,可以使用两种格式:   (1)hex(cout);  //也可以是oct(cout)或dec(cout)   (2)cout<<hex;  //也可以cout&...

YOU13777299447的博客 799
上一篇: exit 、_exit、 return的区别
下一篇: 函数默认参数设置
TypeCool
博客等级 码龄22年 58粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值