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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值