C++格式化输出

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

改变布尔值的格式:

	cout << true << endl;//输出1
	cout << false << endl;//输出0

这是没有改变的,输出布尔类型的时候不会直接输出 true 和 false 而把它们转换成 int型输出。

我们可以利用 boolalpha 和 noboolalpha 来改变打印它的格式。

	cout << boolalpha;//改变打印bool 值的方式,后面所有打印布尔类型值的时候都会打印 true 或者 false 
	cout << true << endl;//输出字符串 true 
	cout << false << endl;//输出字符串 falsr
	cout << noboolalpha;//这里恢复原来默认的打印 bool 值的格式
	cout << true << endl;//输出1

我们在默认打印格式的基础上直接写 noboolalpha 的话还是打印 0 或者 1 不会改变。

改变整形值的进制:

默认情况下,输入输出都是使用十进制。

我们可以使用 hex (十六进制), oct (八进制) , dec(十进制) 改变它们的进制。

    int i = 10;
	cout << i << endl;//输出10
	cout << oct <<i<< endl;//输出12
	cout << hex << i << endl;//输出	a
	cout << dec << i << endl;//输出	10

它们只能改变整形值,它们的使用和 boolalpha 的一样,它们会影响之后所有的输出,直到另一个操作符又改变了格式为止。

在输出中指出进制:

使用  showbase 操纵符会输出结果中显示进制。

int i = 10;
	cout << showbase;//打印时显示进制 以0x开头表示十六进制 ; 0 开头表示 八进制 ; 没有前导符表示 十进制
	cout << oct <<i<< endl;//输出      012
	cout << hex << i << endl;//输出	   0xa
	cout << dec << i << endl;//输出 	10
	cout << noshowbase;//恢复默认状态

默认十六进制会以小写打印。可以使用 uppercase 来输出大写:

	cout << uppercase<<hex << i << endl;//输出	   0XA

控制浮点数格式:

默认情况下浮点值会打印六位精度,如果没有小数部分,则不打印小数点。

通过 precision 或 setprecision (定义在头文件 iomanip 中)来改变精度。

	double i = 3.141526;
	cout << cout.precision() << endl;//返回当前精度值是多少
	cout.precision(12);//设置打印精度
	cout << sqrt(1.1) << endl;//输出    1.04880884817  12位      
	cout<<i<< endl;//输出      3.141526
	cout  << i << endl;//输出 	 3.141526
	cout << setprecision(3);//也可以通过这个来设置打印精度  定义在头文件 iomanip中
	cout << i << endl;//输出3.143
	//sqrt 函数是重载的,接受不同的版本,它定义在头文件 cmath中, 返回实参的平方根。

记数法和强制打印小数点:

	double i = 3.141526;
	cout.precision(12);
	cout<<scientific<<i<< endl;//输出      3.141526000000e+00   使用科学记数法表示
	cout  <<fixed<< i << endl;//输出 	 3.141526000000             使用定点十进制
	cout << defaultfloat;  //将流恢复到默认状态
	cout << i << endl;//输出 3.141526
	//打印小数点
	cout << 10.0000 << endl;//输出 10
	cout << showpoint << 10.0000 << noshowpoint << endl; //输出   	10.0000000000

以下图片来自 《C++ primer》:

 

 

	cout << setfill('#') << setw(12) << 100<<setw(12 ) << 78<<'\n';   //输出   #########100##########78

操作符 noskipws 会让输入运算符读取空白符,而不是跳过它们。恢复默认状态用 skipws。

今天的分享就到这里了!给个关注不迷路,一起成长...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syhk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值