C++零碎知识-输出格式化

利用cout进行输出格式化,cout为ostream类,格式化方式是将值转化为文本方式输出。包括整型、字符、字符串、浮点型。

通过控制符可以修改类成员的值,修改输出的格式。(输出格式不会影响输入内容)

通用的文字是文本宽度成员函数width(),填充字符成员函数fill(),靠左靠右显示成员函数setf(ios_base::left,ios_base::adjustfield)

1数值整型

1.1修改显示时的计数系统

控制整数以十进制、八进制、十六进制显示,控制符为dec、hex、oct。

使用方式有两种,一重载插入运算符<<,二控制符实际上是函数。

cout<<dec<<hex<<oct;
dec(cout);

该设置影响后面所有的数,一直有效。

2浮点数

大都采用成员函数

2.1字段宽度、填充字符

cout.width();
cout.fill('*');

字段宽度默认为,width()方法可以有参数也可以没有参数,都返回原来设置的资源宽度;另外,该方法只影响接下来显示的项目,然后字段宽度就会恢复默认值。

默认值为0还显示数据的原因是:C++不会截短数据,显示所有数据远比保持整洁重要,C++会扩宽字段与数据长度匹配。

fill()一直有效

默认为靠右显示。

2.2浮点数的表示方法

浮点数点数有三种表示方法默认表示方法、定点表示方法、科学表示法

在printf中分别对应说明符“%g”、"%f"、"%e";

明显浮点数的显示方式,还影响的显示精度的显示方式、以及末位0的保留方式;默认情况下是显示6位数,末位0不显示。(注意这里是6位数不是6位小数)。

可以看书浮点数的显示方式,影响成员函数pricision()的含义

并且定点和浮点在有小数的情况下可以达到cout.setf(ios_base::showpoint);的效果

注意以上效果是针对浮点数的不要搞个整数也显示0和小数点,不行。要写成cout<<1.0的形式。

2.3setf()函数

setf()作为iso_base的类函数,被ostream类继承;

有两个函数原型:

fmtflags setf(fmtflags);
fmtflags setf(fmtflags,fmtflags);

(fmtflags(formatflags)是bitmask类型的typedef,在ios_base中定义,所以要加作用域限定符);

这上面两个都是一直作用的,可以用old保留下来手动还原。

ios_base::fmtflags old = cout.setf();

对应的unsetf()函数是关闭相应的状态,只需要一个参数。

2.3.1第一种

fmtflags setf(fmtflags);

前面的showpoint符号常量是第一种函数的参数;

类似的还有

ios_base::boolalpha//输入和输出bool值,显示true或false
ios_base::showbase//输出基数前缀0/0x
ios_base::showpoint//显示省略的0和小数点
ios_base::showpos//显示+
ios_base::uppercase//十六进制使用大写字母表示

bool显示的前提是要将输入识别为bool类型,cin也一样。

2.3.2第二种

第二个参数是清空对应位,第一个参数是设置对应位

第二个参数有 basefield,floatfield,adjustfield

对应的第一个参数有 dec,hex,oct,fixed,scientific,left,right,inter。

2.3.3标准控制符

可以用控制符调用setf函数、unsetf()函数;

cout<<boolalpha<<noboolalpha<<showbase<<noshowbase<<showpoint<<noshowpoint<<showpos<<noshowpos

<<uppercase<<nouppercase

<<inter<<left<<right<<dec<<hex<<oct<<fixed<<scientific;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值