C++格式输入输出

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数C初学者入门训练题解CC的使用文章「初学」C++数据结构

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰C++格式输入输出

🏡用流对象的成员函数控制输入输出格式

🌸1.控制格式的标志位

🌸2.使用成员函数设置标志字

🌸3.使用成员函数设置域宽、填充字节、精度

🏡用控制符控制输入输出格式


🐰C++格式输入输出

🏡用流对象的成员函数控制输入输出格式

🌸1.控制格式的标志位

在ios类中声明了数据成员x_flags(声明语句:long x_flags;),它存储控制输入输出格式的状态标志,每个状态标志占一位。状态标志的值只能是ios类中定义的枚举量.

例如:

 

如果设置了某个状态标志,则x_flags中对应位为1,否则为0.这些状态标志之间是或的关系,可以标志并存

🌸2.使用成员函数设置标志字

ios类中定义了数据成员x_flags来记录当前格式化的状态,即各标志位的设置值,这个数据成员被称为标志字。格式标志在类ios中被定义为枚举值,因此在引用这些格式标志时要在前面加上类名ios和域运算符"::"。设置这个标志字的成员函数为setf,其调用格式如下:

stream_obj.setf(ios::标志位名);

这里,stream_obj是要设置格式标志的流对象,常用的是cin和cout。要设置多个标志时,使用位运算符'|'

cout.setf(ios::dec|ios::scientific);

(1)清除状态标志。

unsetf函数用来清除一个状态标志,即指定的状态标志位为0,

stream_obj.unsetf(ios::标志位名);

(2)取消标志状态值。flags函数用来取当前状态标志。

有两种方法:

stream_obj.flags();
stream_obj.flags(ios::标志位名);

不带参数的函数是返回与流相关的当前状态标志值。带参数的函数是把状态标志值设置为标志位名指定的值,并返回设置前的状态标志值。

注意:函数setf是在原有的基础上追加设定,而flags函数是用新值覆盖以前的值。

#include<iostream>
using namespace std;
int main()
{
    cout.flags(ios::oct);
    cout<<"OCT:1010="<<1010<<endl;//1010的8进制形式
    cout.flags(ios::dec);
    cout<<"DEC:1010="<<1010<<endl;//1010的10进制形式
    cout.flags(ios::hex);
    cout<<"HEX:1010="<<1010<<endl;//1010的16进制形式
    cout.flags(ios::uppercase|ios::hex);
    cout<<"UPPERCASE:1010="<<1010<<endl;//1010的16进制且大写的形式
    cout.unsetf(ios::hex);//清除标志字
    cout<<1010<<endl;
    return 0;
}
结果:
OCT:1010=1762
DEC:1010=1010
HEX:1010=3f2
UPPERCASE:1010=3F2
1010

🌸3.使用成员函数设置域宽、填充字节、精度

在ios类中,除了提供了操作状态标志的成员函数外,还提供了设置域宽、填充字节、精度的成员函数来对输出进行格式化

(1)设置域宽的成员函数width

有两种形式:

【1】int width()//该函数用来返回当前输出数据时的宽度

【2】in width(int wid)//该函数用来设置当前输出数据的宽度为wid,并返回更新前的宽度值

注意:如果输出宽度没有设置,那么默认情况下为数据所占最少字符数。所设置的域宽仅对下一个输出流有效,当一次输出完成后,域宽恢复为0

(2)设置填充字符的成员函数fill

有两种形式:

【1】char fill()//该函数用来返回当前所使用的填充字符

【2】char fill(char c)//带参数的fill函数用来设置填充字符为参数c字符,并返回更新之前的填充字符

注意:如果填充字符省略,那么默认填充字符为空格符。如果设置的数据宽度小于数据所需要的最少字符,则数据宽度默认宽度处理。

(3)设置浮点数输出精度的成员函数precision

有两种形式:

【1】int precision()//该函数返回当前浮点数的有效数字的个数

【2】int precision(int n)//该函数设置浮点数输出时的有效数字个数,并返回更新前的值

注意:float实数最多提供7有效数字,double型实数最多提供15位有效数字,long double型实数最多提供19位有效数字

#include<iostream>
using namespace std;
int main()
{
    cout<<"5201314"<<endl;
    cout<<"Default width:"<<cout.width()<<endl;
    cout.width(12);
    cout<<520<<endl;
    cout<<"Default fill:"<<cout.fill()<<endl;
    cout.width(12);
    cout.fill('#');
    cout<<"Default precision:"<<cout.precision()<<endl;
    cout.precision(5);
    cout<<3.1415926<<endl;
    return 0;
}
结果:
5201314
Default width:0
         520
Default fill:
Default precision:6
3.1416(如果域宽不够,就会四舍五入)

🏡用控制符控制输入输出格式

使用ios类的成员函数来控制输入或输出格式时,必须有流对象来进行调试,使用不方便。我们可以使用特殊的、类似于函数的控制符来进行控制。控制符可以直接嵌入到输入或输出操作的语句中。控制符如下

 

这些控制符是在iomanip中定义的,因此如果在程序中使用这些控制符必须把头文件iomanip包含进来。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    cout<<"DEC:"<<dec<<1010<<endl;
    cout<<"HEX:"<<hex<<1010<<endl;
    cout<<"OCT:"<<oct<<1010<<endl;
    cout<<"OCT:"<<setbase(8)<<1010<<endl;//setbase(n)设置的格式(0,8,10,16)默认值为0
    cout<<setw(15)<<"hello world!"<<endl;
    return 0;
}
结果:
DEC:1010
HEX:3f2
OCT:1762
OCT:1762
   hello world!

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值