cout 格式化输出

2023-11-18

将 cout 的 flag 保存到变量, 以便修改后的恢复

  
  
ostream::fmtflags old = cout.flag() ; // 无参将返回当前 flag 值
cout.flag(old) ; // 恢复到原先保存的值


将 bool 值以 literals 输出

  
  
cout << " numeric : " << true << " or " << false << endl ; // 1 or 0
cout << " literals : " << boolalpha << true << " or " << false << endl ; // true or false
cout << " literals : " << boolalpha << 0 << endl ; // 0 原因: 0 在cout中不等价于 false

一旦我们使用 boolalpha 将改变 cout 对 bool 值的输出格式. 此后的 cout 都会将 bool 输出为 literals.


将 bool 值以 numeric 输出

  
  
cout << " numeric : " << noboolalpha << true << " or " << false << endl ; // 1 or 0

从此以后, cout 对 bool 值的输出将恢复 numeric 格式


指定 Integral Values 的 Base

  
  
const int ival = 17 ; // 'ival' is constant, so value never change
cout << " oct : " << oct << ival << endl ; // 21 : 8 进制
cout << " dec : " << dec << ival << endl ; // 17 : 10 进制
cout << " hex : " << hex << ival << endl ; // 11 : 16 进制
cout << " hex : " << hex << 17.01 << endl ; // 17.01 : 不受影响
如 boolalpha 一样, oct, dec, hex 也是 persistent. 一旦改变, 将影响后续的输出格式.


显示表明 Integer Values 的 Base

  
  
cout << showbase ; // Show base when printing integral values
cout << " oct : " << oct << ival << endl ; // 21 : 8 进制
cout << " dec : " << dec << ival << endl ; // 017 : 10 进制
cout << " hex : " << hex << ival << endl ; // 0x11 : 16 进制
cout << " hex : " << hex << 17.01 << endl ; // 17.01 : 不受影响
cout << noshowbase ; // Reset state of the stream

若想改变16进制字母的大小, 可以结合 uppercase/nouppercase

  
  
cout << showbase << uppercase ;
cout
<< " hex : " << hex << 15 << endl ; // 0XF 大写形式
cout << nouppercase ;
cout
<< " hex : " << hex << 15 << endl ; // 0xf 小写形式

showbase 与 noshowbase 的作用周期也是 persistent


对于 float/double 型, 有三种格式化控制

一:  输出精度 precision : by default is 6 pricision
   控制了至多一共会输出多少个数字. 
   当要输出的数字多余指定的值时, 将发生 四舍五入(rounded); 
   当要输出的数字少于指定的值时, 则实际输出的数字个数将少于指定值.
   
   
// cout.pricision(4) ; // 等价于 cout <<setprecision(4) ;
cout << setprecision( 4 ) << 12.345678 << endl ; // 12.35 rounded!
cout << setprecision( 10 ) << 12.345678 << endl ; // 12.345678 其实内部发生了 rounded, 而结果正好进位, 与原值相同
cout << cout.precision() << endl ; // 输出当前精度
 二:  表现形式 notation :  'very large and very small values are printed using scientific notation. other values use fixed decimal.'
   notation 控制了输出的形式 : 科学计数法(scientific) 和 定点小数(fixed)
   
   
float f = 101 / 6.0 ;
cout
<< fixed << f << endl ; // 16.83334 : 小数点后共6位
cout << scientific << f << endl ; // 1.683333e+001 : 小数点后共6位
  恢复到初始状态
   
   
cout.unsetf(ostream::floatfield) ; // Retrieve to default handling for notation
cout << f << endl ; // 16.8333 : 所有数字共6位
 三:  输出十进制浮点 'By default, when the fractional part of a floating-point value is 0, the decimal point is not displayed. The showpoint manipulator forces the decimal point ot be printed.'
   
   
cout << 10.0 << endl ; // 10
cout << showpoint << 10.0 << endl ; // 10.0000
cout << noshowpoint << endl ; // Revert to default handling of decimal  


输出填充 
Padding the Output

   setw to specify the minimum space for the next numeric or string value.
   
   
cout << setw( 10 ) << 12.3 << endl ; // ______12.3
cout << setw( 10 ) << 12 << 3 << endl ; // ________123

cout
<< setw( 3 ) << 12.345 << endl ; // If the total output is more than 3, it can be extended
 
   left to left-justify the output.
   
   
cout << left ; // left-justify
cout << setw( 5 ) << 12 << setw( 5 ) << 34 << endl ; // 12___34___
 
   right to right-justify the output. Output is right-justified bu default.
   
   
cout << right ; // By default
cout << setw( 5 ) << 12 << setw( 5 ) << 34 << endl ; // 12___34___
 
   internal controls placement of the sign on negative value. internal left-justifies the sign and right-justifies the value, padding any intervening space with blanks.(if setfill not set) 
   
   
cout << internal ; // By default
cout << setw( 5 ) <<- 12 << endl ; // 12___34___
 
    setfill lets us specify an alternative character to use when padding the output. By default, the value is a space.
   
   
cout << setfill( ' * ' ) ; // By default
cout << setw( 5 ) << 12 << endl ; // 12___34___
 

Header Files

   Manipulators Defined in < iomanip>
   
   
setfill( char ch) Fill whitespace with ' ch '
setprecision(
int n) Set floating - point precision to ' n '
setw(
int w) Read or write value to ' w ' characters
setbase(
int b) Output integers in base ' b ' (only ' b ' is 8 / 10 / 16 could the function work)
 


FROM:  http://www.cnblogs.com/walfud/articles/2047096.html


cout怎么输出整

cout怎么输出整数前的0?并且控制总位数
#include<iostream>
#include<iomanip>
 
using  namespace  std;
 
int  main()
{
     int  a = 4;
     cout<<setfill( '0' )<<setw(4)<<4<<endl;
     return  0;
}
FROM:  http://bbs.csdn.net/topics/380234912

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cout 格式化输出 的相关文章

  • 手写android Log 源码(简单版)

    有一天晚上 看了两篇老罗的博客 Android日志系统Logcat源代码简要分析 和 Android日志系统驱动程序Logger源代码分析 于是我就想android10 中 log 是怎么实现的 然后又看了一篇别人的博客 Android10
  • 构造函数属性为protected或者private时

    在c 中 不仅限于c 一个函数被声明为protected或者private时 那也就意味着不能被外部直接调用了 类的成员函数add 是private class cla private int add int a int b return
  • 字符检测:C语言ispunct()函数--判断字符是否为标点符号或特殊字符

    ispunct 函数用来检测一个字符是否为标点符号或特殊字符 其原型为 int ispunct int c 参数 c 为需要检测的字符 返回值 若 c 为标点符号或特殊符号 非空格 非数字和非英文字母 返回非 0 值 否则返回 0 注意 此
  • Qt/MFC获取主窗口的指针

    在不同的窗口类中 不同的类之间需要互相访问 有时需要知道另一个窗口类的指针来调用他的函数 本文介绍两种方法 如下 Qt 方法1 WId ir WId FindWindow NULL L Target className pM classNa
  • 单链表实现多项式相加

    这个小项目用C语言实现 代码中有我的注释 思路 用链表的每个节点存储表达式的每一项 因此每个链表就是一个表达式 链表节点类型的定义 struct Node DataType elem 项的系数 Variate ch 常量和变量的标志 规定如
  • 23种常用设计模式(C++)

    Part One Methods for constrcting a new object 1 Factory method 我们把简单工厂方法归类到工厂方法中 工厂方法的目的是用来解决具有同一接口 基类 派生类对象的生成问题 尽管可以通过
  • c语言---字符串为什么不能修改内容???字符串常量存放在常量区吗???

    疑惑 1 const修饰的变量都存放在常量区吗 2 字符串常量存放在那 为什么字符型指针 char 指向字符串不能修改其内容 字符串的演变 char p 123456 123456 常量字符串 char static const char
  • C++ 创建共享内存

    共享内存用于实现进程间大量的数据传输 共享内存是在内存中单独开辟一段内存空间 这段内存空间有自己特有的数据结构 包括访问权限 大小和最近访问时间等 1 shmget函数 include
  • C++ 构造函数和析构函数是否可以继承?

    先看一个例子 cpp view plain copy include
  • c++的默认拷贝构造函数,从深度拷贝和浅拷贝说起

    本文收录于微信公众号 LinuxOK ID为 Linux ok 关注公众号第一时间获取更多技术学习文章 1 c 类的默认拷贝构造函数的弊端 c 类的中有两个特殊的构造函数 1 无参构造函数 2 拷贝构造函数 它们的特殊之处在于 1 当类中没
  • 从Qt谈到C++(一):关键字explicit与构造函数

    原文 http blog csdn net guodongxiaren article details 24455653 主题 Qt 提出疑问 当我们新建了一个Qt的widgets应用工程时 会自动生成一个框架 包含了几个文件 其中有个ma
  • 移动构造-C++11

    移动构造 移动构造是C 11标准中提供的一种新的构造方法 在现实中有很多这样的例子 我们将钱从一个账号转移到另一个账号 将手机SIM卡转移到另一台手机 将文件从一个位置剪切到另一个位置 移动构造可以减少不必要的复制 带来性能上的提升 有些复
  • c++继承中的内存布局(转)

    今天在网上看到了一篇写得非常好的文章 是有关c 类继承内存布局的 看了之后获益良多 现在转在我自己的博客里面 作为以后复习之用 谈VC 对象模型 美 简 格雷 程化 译 译者前言 一个C 程序员 想要进一步提升技术水平的话 应该多了解一些语
  • C语言中的快速排序库函数

    前言 由于自己的记性一直不好 总是记不住c语言中的快速排序函数 于是自己写下博客来记录一下 快速排序库函数 c语言中的快速排序库函数如下 注意 库函数是在stdlib h头文件中 qsort arr length size t cmp 其中
  • 有些运行符不能重载为友元函数,它们是:=,(),[]和->。

    原因 有人说是因为 C 规定赋值运算符 只能重载为类的非静态成员函数 而不可以重载为类的友元函数 不能重载为类的静态成员应该比较容易理解 因为静态成员函数是属于整个类的 不是属于某个对象的 它只能去操作类静态数据成员 而赋值运算符 是基于对
  • struct和typedef struct彻底明白了

    struct和typedef struct 分三块来讲述 1 首先 注意在C和C 里不同 在C中定义一个结构体类型要用typedef typedef struct Student int a Stu 于是在声明变量的时候就可 Stu stu
  • C++ 虚函数表解析

    C 虚函数表解析 陈皓 http blog csdn net haoel 前言 C 中的虚函数的作用主要是实现了多态的机制 关于多态 简而言之就是用父类型别的指针指向其子类的实例 然后通过父类的指针调用实际子类的成员函数 这种技术可以让父类
  • cout 格式化输出

    将 cout 的 flag 保存到变量 以便修改后的恢复 ostream fmtflags old cout flag 无参将返回当前 flag 值 cout flag old 恢复到原先保存的值 将 bool 值以 literals 输出
  • 如何零基础自学c/c++语言?

    现在零基础学习C C 无非就两种方法 一种是自学还有 一种就是报班学习 关于报班学习在这里就不多说了 那么今天就说怎么从零基础开始自学C C 编程吧 先学习C语言入门 那么问题来了 怎么去学习C语言呢 一开始肯定是要看书 这里推荐的入门书籍
  • 类的数组成员变量的初始化

    使用STL标准模板库之后 编程时已经很少使用数组和指针 相反 多使用序列容器vector代替之 但事实并不这么理想 在迫不得已的情况下 我们还是会选择使用数组 这里介绍一下当数组作为类的成员变量时 应该怎么对它 数组 进行初始化 在类的构造

随机推荐

  • Web前端部署的几种方法和步骤

    随着互联网技术的发展和普及 Web前端开发已成为当今最重要和最具前景的技能之一 与此同时 如何将 Web 前端部署到服务器上已成为一个必不可少的技能 本文将介绍 Web 前端部署的几种方法和步骤 一 前置准备 在开始 Web 前端部署之前
  • linux安装SecureCRT安装教学

    linux安装SecureCRT安装教学 列如 Anolis OS8 6 安装SecureCRT8 0 目录 系列文章目录 linux安装SecureCRT安装教学教学 前言 一 securecrt安装 二 使用步骤 1 创建securec
  • verdi中如何查看force信号信息

    转载 verdi中如何查看force信号信息 骏的世界 lujun org cn 在仿真中 我们会有对信号进行force的操作 从而实现某些特定的功能 但是在仿真波形中 不能直接从波形上看出 这些信号的驱动 是因为前级电路的驱动 还是因为f
  • 为何软文营销能够做到良好的品牌推广效果

    如今的互联网已经不再是十多年前那样只能看看文字 图片 而是一个包罗万象的大集合 其中内容之丰富 已经开始有代替报纸 电视 广播等传统的信息传播途径 因此 越来越多的人选择了互联网 在互联网上的推广效果是越来越给力 面对这么大的宣传平台 很多
  • 三分钟,教你3种前端埋点方式!

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 只有了解用户 我们才能服务好用户 而最接近用户的我们 自然要承担起更多的责任 那么在一个企业中 我们要如何去了解用户呢 最直接有效的方式
  • 警告: Unable to find required classes (javax.activation.DataHandler and javax.mail

    在调试Axis1 4访问WebService服务时 出现以下警告 警告 Unable to find required classes javax activation DataHandler and javax mail internet
  • sip线路对接_线路调度一二三

    使用呼叫中心系统 在进行外呼业务时 坐席的呼出呼叫 最终需要通过各种线路进行呼出 根据线路类别不同 目前常见的有数字中继线 SIP中继对接线路 IMS接入线路 FXO大号模拟线 卡线 API对接线路 除自有线路外 根据供应商类型 主要有各地
  • 【Linux中shell脚本】Linux中shell脚本回车换行问题

    背景 windows下编辑shell脚本 报错 syntax error near unexpected token r 问题产生原因 因为windos与linux换行符不同导致 notepad 中 视图 gt 显示符号 gt 显示所有符号
  • Qt技术重绘QtableView方法

    在项目过程中需要在列表中用图形显示磁盘的使用情况 这用Qt自身的QTableview控件不能完全实现 需要用委托进行重绘 创建一个委托类继承QItemDelegate类 然后实现void paint QPainter painter con
  • 研报精选230410

    目录 行业230410西南证券 医药行业2023年4月投资月报 看好创新药和中药行情 行业230410国信证券 汽车行业4月投资策略 3月新能源乘用车批发销量预计同比增长32 持续关注板块年报季报行情 行业230410西南证券 医药行业周报
  • java------int=20是存在堆里还是栈里

    如果方法里的局部变量 就会存在栈帧里的局部变量表中 如果是成员变量则存在于堆中 它属于int类的一个实例 存放在堆中开辟的空间
  • 【Mo 人工智能技术博客】图卷积网络概述及其在论文分类上的应用

    近年来 深度学习在计算机视觉 自然语言处理等领域大放异彩 这些领域所面对的数据都是结构化的 如图像 音频 文本等 它们内部都有明确的排列规则 结构化的数据由于具有这些确定的规则而方便处理 但是在现实生活中 非结构化的关系数据才是主流 我们无
  • Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源

    国内有很多Ubuntu的镜像源 包括阿里的 网易的 还有很多教育网的源 比如 清华源 中科大源 我们这里以中科大的源为例讲解如何修改Ubuntu 18 04里面默认的源 编辑 etc apt sources list文件 在文件最前面添加以
  • 华为OD机试 - 跳格子1(Java)

    题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子 每个格子有不同的分数 小朋友可以选择以任意格子起跳 但是不能跳连续的格子 也不能回头跳 给定一个代表每个格子得分的非负整数数组 计算能够得到的最高分数 输入描述 给定一个数列 如 1 2
  • 3D游戏设计大作业

    Unity大作业 粒子系统效果 一 前言 1 此篇文章记录了2022年第二学期中山大学软件工程3D游戏与编程的大作业 本次大作业可选择范围众多 最终我选择了粒子系统效果作为了本次大作业的主题 2 一个粒子系统可以模拟并渲染许多称为粒子的小图
  • CRC校验总结

    事实上网上很多CRC校验算法 在接收端进行CRC校验时 余数不为零 这往往是因为CRC校验算法本身是有问题的 但不妨碍我们进行校验 接收端可以对需要校验的字段带入CRC校验算法 计算得到校验值 并与发送数据中的校验值进行比较 如果两者相等
  • 生信技能树R语言学习

    一 数据类型和向量 1 数据类型 1 1 判断数据类型class 1 2 按Tab键自动补全 1 3 数据类型的判断和转换 1 is 族函数 判断 返回值为TRUE或FALSE is numeric 123 is character a i
  • 32位/64位WINDOWS驱动之-突破进程保护映射的方法进行跨进程读内存2

    32位 64位WINDOWS驱动之 突破进程保护映射的方法进行跨进程读内存2 一 在过保护读写筛选器中添加 读写驱动2 c 驱动层 代码如下 include
  • 黑马头条 热点文章实时计算、kafkaStream

    热点文章 实时计算 1 今日内容 1 1 定时计算与实时计算 1 2 今日内容 kafkaStream 什么是流式计算 kafkaStream概述 kafkaStream入门案例 Springboot集成kafkaStream 实时计算 用
  • cout 格式化输出

    将 cout 的 flag 保存到变量 以便修改后的恢复 ostream fmtflags old cout flag 无参将返回当前 flag 值 cout flag old 恢复到原先保存的值 将 bool 值以 literals 输出