C++输出流的格式控制
2011-05-30 19:00
309 查看
文章转自:http://hi.baidu.com/rocketxyf/blog/item/2562473114dbad17eac4af5a.html
输出显示结果为“###123”,123右对齐,在前面填充3个’#’ 。
(3)setbase(int n) 预设整数输出进制 如:
输出显示结果为377
(4)setprecision(int n) 用于控制输出流显示浮点数的精度,整数n代表显示的浮点数数字的个数。示例程序如下
第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()函数用来获取“读入指针”的当前位置(从文件首到当前位置的字节数)。
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++][STL]输出流(Output Stream)的格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制 分类: C/C++ 2015-07-27 12:27 8人阅读 评论(0) 收藏
- C++输入输出流格式控制[转]
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制(转)
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++ iostream 输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输入输出流格式控制
- C++输出流的格式控制setw()、setfill()、setbase()、setprecision()、tellp...
- c++输入输出流格式控制
- c++中输入输出流的格式控制符