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) 设置域宽格式变量
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()函数用来获取“读入指针”的当前位置(从文件首到当前位置的字节数)。
C plus plus 控制格式的更多相关文章
- linux 终端控制-- 多彩输出 格式排版
linux 终端控制-- 多彩输出 格式排版 在unix/linux的终端下,怎么控制终端输出的颜色和格式呢,当然了有专门的工具,tput,但是能被terminal直接读懂的格式化字符串更通用. 先来 ...
- 标准 DateTime 格式字符串
标准 DateTime 格式字符串 MSDN 标准 DateTime 格式字符串包含一个标准 DateTime 格式说明符字符,该字符表示自定义 DateTime 格式字符串.格式字符串最终定义由格式 ...
- setprecision(int n)等格式函数用法 分类: POJ 2015-06-11 10:56 17人阅读 评论(0) 收藏
**这些用法前最好用 #include <iostream> //不要用iostream.h ,会出现好多问题 #include <iomanip> // io 流控制头 ...
- Linux远程访问及控制(SSH)
1.ssh协议:用于远程登录,端口号:22/tcp 配置文件: 1)服务器端口:/etc/ssh/sshd_config 2)客户端 :/etc/ssh/ssh_config 2.服务器监听选项: U ...
- golang fmt格式“占位符”
# 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位 ...
- CString中Format函数与格式输入与输出
CString中Format函数与格式输入与输出 Format是一个非经常常使用.却又似乎非常烦的方法,下面是它的完整概貌.以供大家查询之用: 格式化字符串forma("%d" ...
- golang fmt格式占位符
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...
- C++: I/O流详解(二)——输入输出格式控制
一.格式控制 ios提供直接设置标志字的控制格式函数 iostream和iomanip库还提供了一批控制符简化I/O格式化操作 状态标志 值 含义 输入/输出 skipws 0X0001 跳过输入中的 ...
- C++输入输出常用格式(cin,cout,stringstream)
输入格式 1.cin>>a; 最基本的格式,适用于各种类型.会过滤掉不可见字符例如空格,TAB,回车等 2.cin>>noskipws>>ch[i]; 使用了 no ...
随机推荐
- 论文神器Latex30分钟快速入门教程-只需9步向学神看齐
小E说:工欲善其事,必先利其器.立志做个安静的美学霸的你,学会Latex,一定能使你的论文写作事半功倍. 1.LaTeX软件的安装和使用 方法A(自助):在MikTeX的官网下载免费的MikTeX编译 ...
- 数学图形之克莱因瓶(klein bottle)
克莱因瓶是一种内外两面在同一个曲面上的图形. 在数学领域中,克莱因瓶(德语:Kleinsche Flasche)是指一种无定向性的平面,比如二维平面,就没有“内部”和“外部”之分.克莱因瓶最初的概念提 ...
- 我所遭遇过的游戏中间件--Scaleform
我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...
- java中需要用equals来判断两个字符串值是否相等
在C++中,两个字符串比较的代码可以为: (string1==string2) 但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false Java中必须使用string1.equal ...
- 记录cocos2d-html5与cocosd-x jsb中遇到的坑
这两天开始用coco2d-html5写游戏, 但最终是发布到手机上, 写的js代码是跑在jsb上的. 在此记录下遇到的坑. 注:cocos2d-x 简称 cx, cocos2d-html5 简称ch ...
- C#读写txt文件的两种方法介绍[转]
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- TabLayout ViewPager Fragment 简介 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- JSON在php中的使用
从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码. json_encode() ...
- 折腾开源WRT的AC无线路由之路-1
Tags: tomato, dd-wrt, Netgear, NightHawk, R7000, RT-AC68U, RT-AC66U, N66U, N56U, WRT1900AC, Archer C ...
- C#.NET常见问题(FAQ)-TabControl如何隐藏和显示页面
如果需要显示某个页面,则让他的Parent就是TabControl的控件名称,如果要隐藏,则等于null private void ToolStripMenuItemTeachPanelBa ...