专栏首页mlC plus plus 控制格式

C plus plus 控制格式

使用这些格式需要声明包含<iomainip>

long flags( ) const 返回当前的格式标志。 long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。 long setf(long bits) 设置指定的格式标志位,返回旧的格式标志。 long setf(long bits,long field)将field指定的格式标志位置为bits,返回旧的格式标志 long unsetf(long bits) 清除bits指定的格式标志位,返回旧的格式标志。 long fill(char c) 设置填充字符,缺省条件下是空格。 char fill( ) 返回当前填充字符。 int precision(int val) 设置精确度为val,控制输出浮点数的有效位,返回旧值。 int precision( ) 返回旧的精确度值。 int width(int val) 设置显示数据的宽度(域宽),返回旧的域宽。 int width( )只返回当前域宽,缺省宽度为0。这时插入操作能按表示数据的最小宽度显示数据 dec 十进制的输入输出 hex 十六进制的输入输出 oct 八进制的输入输出 ws 提取空白字符 flush 刷新流 resetiosflags(long) 请除特定的格式标志位 setiosflags(long) 设置特定的格式标志位 setfill(char) 设置填充字符 setprecision(int) 设置输出浮点数的精确度 setw(int) 设置域宽格式变量

C++输入输出流格式控制

1.使用控制符控制输出格式

控制符

作用

dec

设置整数的基数为10

hex

设置整数的基数为16

oct

设置 整数的基数为8

setbase(n)

设置整数的基数为n(n只能是16,10,8之一)

setfill(c)

设置填充字符c,c可以是字符常量或字符变量

setprecision(n)

设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位数)形式和scientific(指数)形式输出时,n为小数位数。

setw(n)

设置字段宽度为n位。

setiosflags(ios::fixed)

设置浮点数以固定的小数位数显示。

setiosflags(ios::scientific)

设置浮点数以科学计数法(即指数形式)显示。

setiosflags(ios::left)

输出数据左对齐。

setiosflags(ios::right)

输出数据右对齐。

setiosflags(ios::shipws)

忽略前导的空格。

setiosflags(ios::uppercase)

在以科学计数法输出E和十六进制输出字母X时,以大写表示。

setiosflags(ios::showpos)

输出正数时,给出“+”号。

resetiosflags

终止已设置的输出格式状态,在括号中应指定内容。

2.用流对象的成员控制输出格式

流成员函数

与之作用相同的控制符

作用

precision(n)

setprecision(n)

设置实 数的精度为n位。

width(n)

setw(n)

设置字段宽度为n位。

fill(c)

setfill(c)

设置填充字符c。

setf( )

setiosflags( )

设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。

ubsetf( )

resetiosflags( )

终止已设置的输出格式状态。

cout.width(10); cout.setf(ios::hex);

3.设置格式状态的格式标志

格式标志

作用

ios::left

输出数据在本域宽范围内左对齐

ios::right

输出数据在本域宽范围内右对齐

ios::internal

数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充

ios::dec

设置整数的基数为10

ios::oct

设置整数的基数为8

ios::hex

设置整数的基数为16

ios::showbase

强制输出整数的基数(八进制以0打头,十六进制以0x打头)

ios::showpoint

强制输出浮点数的小点和尾数0

ios::uppercase

在以科学计数法输出E和十六进制输出字母X时,以大写表示

ios::showpos

输出正数时,给出“+”号。

ios::scientific

设置浮点数以科学计数法(即指数形式)显示

ios::fixed

设置浮点数以固定的小数位数显示

ios::unitbuf

每次输出后刷新所有流

ios::stdio

每次输出后清除 stdout,stderr

以小数形式,保留三位小数输出: cout<<setprecision(3)<<setiosflags(ios::fixed)<<3.1415926<<endl;

C++输出流的格式控制setw()、setfill()、setbase()、setprecision()、tellp...

inline SMANIP(long) resetiosflags(long _l) { return SMANIP(long)(__resetiosflags, _l); } inline SMANIP(int) setfill(int _m) {return SMANIP(int)(__setfill, _m); } inline SMANIP(long) setiosflags(long _l) {return SMANIP(long)(__setiosflags, _l); } inline SMANIP(int) setprecision(int _p) {return SMANIP(int)(__setprecision, _p); } inline SMANIP(int) setw(int _w) { return SMANIP(int)(__setw, _w); }

//他们都是inline 内联函数

(1)setw(int n) 预设输出宽度

如:cout<<setw(6)<<123<<endl;

输出结果为“ 123”,在123的前面会有3个空格,123右对齐。

(2)setfill(char c) 预设填充字符

如:cout<<setfill(‘#’)<<123<<endl;

输出显示结果为“###123”,123右对齐,在前面填充3个’#’ 。

(3)setbase(int n) 预设整数输出进制

如:cout<<setbase(8)<<255<<endl;

输出显示结果为377

(4)setprecision(int n) 用于控制输出流显示浮点数的精度,整数n代表显示的浮点数数字的个数。示例程序如下:

#include <iostream.h>

#include <iomanip.h> //格式控制

void main()

{

double amount = 22.0/7;

cout <<amount <<endl; //(1)

cout <<setprecision(0) <<amount <<endl //(2)

<<setprecision(1) <<amount <<endl //(3)

<<setprecision(2) <<amount <<endl //(4)

<<setprecision(3) <<amount <<endl //(5)

<<setprecision(4) <<amount <<endl; //(6)

cout <<setiosflags(ios::fixed);

cout <<setprecision(8) <<amount <<endl; //(7)

cout <<setiosflags(ios::scientific)<<amount<<endl; //(8)

cout <<setprecision(6);

}

第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8。在用指数形式输出时,setprecision(n)表示小数位数。 (可是这个指数形式的输出我用VC6没有运行出来)。

setw(int _w)讲解 << setw(int _w) << 输出位宽 如<< setw(7) << 1000 输出结果为 "1000 "(紧跟三个空格) 而如<< setw(3) << 1000 位宽小于原来的数字的位宽那么按照原来的格式输出"1000" 前后无空格

setfill() 讲解 setfill(int _m) 随setw(int _w)一起使用 意思是在set(int _w)设定后的空格填充指定的字符 注意setfill里边的参数是int _m 是个整数 所以如果我们要用空格来填充*号的时候 要使用setfill('*')[字符] 而不是setfill(*)

C++中tellp()函数与tellg()函数 tellp()函数用来获取“输出指针”的当前位置(从文件首到当前位置的字节数); tellg()函数用来获取“读入指针”的当前位置(从文件首到当前位置的字节数)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HUDOJ-----1394Minimum Inversion Number

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit:...

    Gxjun
  • HDUOJ---2152

    Fruit Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav...

    Gxjun
  • hdu 1598 find the most comfortable road(枚举+卡鲁斯卡尔最小生成树)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory ...

    Gxjun
  • 浅谈系统架构的几个方面

    今天心血来潮,突然想起以前对于架构设计的理解,也是多年来总结的一个结果,分享给大家,欢迎拍砖!

    frankzheng
  • 行业人士需要知道关于容器即服务的一切

    容器即服务提供了一种设置容器集群的简单方法。而选择正确的通讯即服务(CaaS)平台则取决于托管和容器堆栈的灵活性。 由于出现了大量的容器即服务或者CaaS,产品...

    静一
  • 命令行一键切换java版本的几种方式

    java现在版本发布相对以前比较频繁了,java9还没来得及用,java10就出来了,2018年9月份java11也要来了,于是就有需求在笔记本电脑上装多个版本...

    codecraft
  • Excel转表工具(xresloader) 增加protobuf插件功能和集成 UnrealEngine 支持

    我们项目组最近在学习UE,然后就涉及导表这个东东。之前我已经做过一个功能比较全面并且跨平台的Excel导出protobuf、msgpack、xml、lua、js...

    owent
  • STL算法(for_each/transform)

    用于逐个遍历容器元素,它对迭代器区间[first,last)所指的每一个元素,执行由单参数函数对象f所定义的操作。方法返回函数对象。

    用户2929716
  • IDEA的java源码文件左边有一个红色的J

    如果源码文件这里已经有一个路径,那就添加现在的.java文件所在目录,或者删除了再重新添加

    爱学习的孙小白
  • springboot一个实例项目的pom.xml文件

    1、搭建的基础是公司提供的一个xxx-xxx-web-parent的包,相当于对springboot的parent包的封装。

    用户5640963

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动