C++输入输出流格式控制
2015-12-01 16:22
323 查看
在输出浮点数时,C++默认的流输出数值有效位是6,所以不管数据是多少都只输出六位有效数字。可以采用setprecision(n)来控制输出流显示浮点数的数字个数。
I/O流常用控制符:
使用控制符时,需要加入头文件#include<iomanip>。C++有两种方法控制格式输出:1、用格式控制符;2、用流对象的成员函数。
使用格式控制符:
成员函数:
dec 置基数为10 相当于"%d";hex 置基数为16 相当于"%X";oct 置基数为8 相当于"%o"。
设置格式状态的格式标志:
测试1:一个按进制输出的例子(成员函数实现)
View Code
I/O流常用控制符:
使用控制符时,需要加入头文件#include<iomanip>。C++有两种方法控制格式输出:1、用格式控制符;2、用流对象的成员函数。
使用格式控制符:
控制符 | 作用 |
dec | 设置整数的基数为10 |
hex | 设置整数的基数为16 |
oct | 设置整数的基数为8 |
setbase(n) | 设置整数的基数为n,其中n的取值为8,10,16 |
setfill(c) | 设置填充字符,c可以是字符常量或字符变量 |
setprecision(n) | 设置实数的精度为n位。在以一般十进制形式输出时,n代表有效数字。在以fixed(固定小数位)形式和scientific(指数)形式输出时,n为小数位数。 |
setw(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 | 终止已设置的输出格式状态,在括号中应指定内容。 |
流成员函数 | 与之作用相同的控制符 | 作用 |
precision(n) | setprecision(n) | 设置实 数的精度为n位。 |
width(n) | setw(n) | 设置字段宽度为n位。 |
fill(c) | setfill(c) | 设置填充字符c。 |
setf( ) | setiosflags( ) | 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。 |
ubsetf( ) | resetiosflags( ) | 终止已设置的输出格式状态。 |
设置格式状态的格式标志:
格式标志 | 作用 |
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 |
#include <iomanip.h> void main() { float f=2.0/3.0,f1=0.000000001,f2=-9.9; cout<<f<<' '<<f1<<' '<<f2<<endl; //正常输出 cout<<setiosflags(ios::showpos); //强制在正数前加+号 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::showpos); //取消正数前加+号 cout<<setiosflags(ios::showpoint); //强制显示小数点后的无效0 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::showpoint); //取消显示小数点后的无效0 cout<<setiosflags(ios::scientific); //科学记数法 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::scientific); //取消科学记数法 cout<<setiosflags(ios::fixed); //按点输出显示 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::fixed); //取消按点输出显示 cout<<setprecision(18); //精度为18,正常为6 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<setprecision(6); //精度恢复为6 }
View Code
相关文章推荐
- (五)C++基本类型表
- C++二维数组作为参数问题
- C++ 数字与字符串互转
- C++文件读写详解(ofstream,ifstream,fstream)
- 数组中出现次数超过一半的数字(C++)
- C++强制类型转换
- C语言宏
- c++的重载、覆盖和隐藏(遮蔽)
- C++去掉string , char[] 右边的空格
- 面试总结5--C++基础问题Part1
- C++编程技能(经常修改)
- 从上往下打印二叉树BFS(C++)
- C++11学习笔记(六)
- c++相关知识
- C++标准库——简介
- C++11开发环境相关
- c++中构造函数初始化列表
- C语言编程中函数的基本学习教程
- c++之string与int型的互转方法归纳
- 判断给定序列是否是对应入栈序列的出栈序列(C++)