c++操纵符

标准库定义了一组操纵符来次该流的格式状态。

操纵符是一个函数或一个对象,会影响流的状态,并能用作输入或输出的运算符的运算对象。例如

cout<<end;
cout.precision(12);

大多数用来改变状态的操纵符都是设置/复原成对的:一个用来将格式状态设置为新值,另一个用来将其复原,恢复成正常的默认状态。

定义在iostream中的操纵符:

1.

boolalphaboolaalpha将true和false输出为字符串
noboolalpha  将true和false输为1,0   

cout<<boolalpha<<true<<" "<<false<<endl; // true false
cout<<noboolalpha<<true<<" "<<false<<endl; //1 0

2. 

showbase对整数值输出表示进制的前缀
noshowbase 不生成表示进制的前缀

cout<<showbase;
cout<<dec<<20<<endl;      //20	 (十进制)   
cout<<oct<<20<<endl;      //024  (八进制)
cout<<hex<<20<<endl;      //0x14 (十六进制)


3. 

showpoint 对浮点值总是显示小数
noshowpoint只有当浮点值包含小数部分时才显示小数点

cout<<showpoint<<float(1)<<endl;  //1.0000

4. 

showpos 对非负数显示+
noshwpos  对非负数不显示+

cout<<showpos<<1<<endl;   //+1

5. 

uppercase 对十六进制值中打印0X,在科学计数法中打印E
nouppercase对十六进制值中打印0x,在科学计数法中打印e

cout<<uppercase<<showbase<<hex;
cout<<1<<endl;         //0X1
cout<<12345678<<endl;  //0XBC614E

cout<<nouppercase;
cout<<1<<endl;         //0x1
cout<<12345678<<endl;  //0xbc614e


6. 

dec整型值显示为十进制
hex 整型值显示为十六进制
oct      整型值显示为八进制
cout<<dec<<20<<endl; //20     

cout<<oct<<20<<endl;      //24  
cout<<hex<<20<<endl;      //14 


7. 

left在值的右侧添加填充字符
right 在值得左侧添加填充字符
internal在符号和值之间添加填充字符
setw() 指定下个数字或字符串的最小空间   
setfill()允许指定下个字符代替默认的空格来补白输出

(头文件为#include <iomanip>)

    cout<<setw(12)<<16<<"end"<<endl;                    //          16end
    cout<<left<<setw(12)<<16<<"end"<<endl;              //16          end
    cout<<right<<setw(12)<<16<<"end"<<endl;             //          16end
    cout<<internal<<setw(12)<<16<<"end"<<endl;          //          16end
    cout<<internal<<setw(12)<<-16<<"end"<<endl;         //-         16end
    cout<<setfill('!')<<setw(12)<<16<<"end"<<endl;      //!!!!!!!!!!16end
    cout<<setfill('!')<<setw(12)<<-16<<"end"<<endl;     //-!!!!!!!!!16end

8. 

fixed浮点值显示为定点十进制
scientific浮点值显示为科学计数法
hexfloat浮点数显示为十六进制(C++11新特性)
defaultfloat重置浮点数格式为是进制(C++11新特性)

    cout<<fixed<<100*sqrt(2.0)<<endl;       //141.421356
    cout<<scientific<<100*sqrt(2.0)<<endl;  //1.414214e+002
    cout<<hexfloat<<100*sqrt(2.0)<<endl;    //0x1.1ad7bcp+7


9. 

unitbuf每次输出操作后都刷新缓冲区
nounitbuf恢复正常的缓冲区刷新方式


10. 

skipws输入运算符跳过空白符
noskips输入运算符不跳过空白符

    cin>>noskipws;

11. 

flush刷新ostream缓冲区
ends插入空字符,然后刷新ostream缓冲区
endl插入换行,然后刷新ostream缓冲区

    cout<<"a"<<ends<<"b";   //a b
    cout<<"a"<<endl<<"b";   //a
                            //b


12.

cout.precision()返回当前打印精度
cout.precision(int)设置打印精度
setprecision(int)设置打印精度
(头文件为#include <iomanip>)

    cout<<cout.precision()<<endl;   //6
    cout.precision(8);
    cout<<sqrt(2.0)<<endl;          //1.4142136
    cout<<setprecision(3);
    cout<<sqrt(2.0)<<endl;          //1.41






 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值