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库设置精度、宽度和对齐方式。同时,理解缓冲区机制对于处理输出顺序、性 阅读详情

相关推荐

ESP32S3新手避坑:用IDF5.0驱动GT911触摸屏,我踩过的三个雷都给你填平了

本文详细解析了在ESP32S3开发板上使用IDF5.0驱动GT911触摸屏时常见的三大问题:软重启失效、状态寄存器读取异常和初始化参数差异。通过逻辑分析和硬件调试工具,提供了针对性的解决方案和优化建议,帮助开发者高效完成触摸屏驱动开发。

weixin_42567497的博客 297

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

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

白水的博客 5万+

宝塔部署若依前端出现502解决方法

若依系统是一个基于Java语言的开源项目,旨在帮助开发者减少开发时间,特别适用于需要快速开发出一套具有用户管理、菜单管理、权限管理、定时任务、日志管理等功能的简单系统。系统分为前后端分离、分布式等架构前后端分离部署教程然而通过宝塔来部署若依系统会遇见一些问题,特此在这里记录一下。

m0_74823683的博客 776

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万+

嵌入式人工智能(18-基于树莓派4B的继电器JQC-3FF-S-Z)

本次实验的输出端控制不会接强电,就用LED灯来模拟即可,由于我那个流水灯模块是低电平点亮,所以接线稍有不同,同学们注意。只有继电器吸合,输出端的NO与COM就导通,给LED低电平然后就亮,否则继电器断开,NO与COM不导通,LED不亮。原理都一样,控制电流的接通与断开,这个模块看起来还简单点,毕竟还有2个指示灯,下端IN如接上电源红灯亮,继电器动作有电流通过绿灯亮。在实际应用中,可以通过编程控制继电器的通断状态,例如在Python编程中设置继电器模块的通断时间,从而实现自动化控制。

u010152658的博客 2531

模型量化必知:Per-Tensor和Per-Channel到底怎么选?

本文深入解析了模型量化中Per-Tensor与Per-Channel两种核心策略的抉择。Per-Tensor量化实现简单、硬件兼容性极佳,适合激活值或分布均匀的权重;而Per-Channel量化精度更高,能更好地处理权重分布不均的卷积层,是现代CNN权重量化的主流。文章提供了从硬件平台、数值分布到精度需求的实战决策框架,并推荐了“权重Per-Channel,激活Per-Tensor”的混合量化最佳实践。

assembly8low的博客 983

cout.setf()

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

weixin_30649859的博客 588

2018安徽省青少年信息学奥林匹克(AHOI)初中组

12 种合法的排列分别为:1, 3, 2, 4, 2, 3, 1, 4, 3, 1, 4, 2, 3, 2, 4, 1, 1, 3, 4, 2, 2, 3,4,1,1,4,2,3, 2,4,1,3, 4,1,3,2, 4,2,3,1, 1,4,3,2, 2,4,3,1。分为 2 组,一组的队员实力值是{4, 5, 2, 3},一组是{-4, -3, -5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。[0, 1, 1, 2]同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。

weixin_42358969的博客 1143

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

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

fly_sky_share的博客 1698

番外篇 | 复现HIC-YOLOv5,助力小目标物体的检测

在本文中提出了一种改进的YOLOv5算法:HIC-YOLOv5,用于小目标检测,具有更好的性能和较低的计算成本。🌈

小哥谈 1129

如何使用CPU-Z获取内存条频率信息(编程)

当我们需要获取计算机内存条的频率信息时,可以利用CPU-Z这个工具来实现。CPU-Z是一款专门用于获取计算机硬件信息的工具,它提供了API接口,我们可以通过编程的方式来获取内存条频率信息。你可以从CPU-Z官方网站下载适用于你的操作系统的CPU-Z程序,并从安装目录中找到。函数,我们可以初始化CPU-Z,如果返回值不为0,则表示初始化失败。函数来获取内存条频率信息,如果返回值小于等于0,则表示获取失败。函数来初始化CPU-Z并获取内存条频率信息。最后,我们将获取到的内存条频率信息打印输出,并使用。

ByteProwl的博客 457

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

/命令cout显示true和false。

m0_68731112的博客 726

10、利用智能合约实现公平的私有集合交集

本文探讨了利用智能合约实现公平的私有集合交集(PSI)的多种协议,重点分析了协议 Π 和 Π∗ 的气体成本与性能特点。同时对比了包括 Justitia 和 Anesidora 在内的现有方案,突出了仅使用智能合约实现硬币补偿公平性的优势。文中还介绍了相关密码学基础、安全模型及隐私保障机制,为在不同应用场景下选择高效、安全的 PSI 协议提供了理论支持和实践指导。

linux的博客 95

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

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

weixin_42298826的博客 6082

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

raoxiaoz0425的博客 25

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

weixin_34364071的博客 1399

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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、付费专栏及课程。

余额充值