归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏? + 留言?📝
含泪播种的人一定能含笑收获!
一起加油!
目录
????????以上介绍的都是按照系统默认的格式进行输入/输出,即无格式输入/输出,主要针对简单的程序和数据,为了方便采取了默认的格式。然而,有时程序需要按照特定的格式进行输入/输出.例如,要求用十六进制输出整数,或者对输出的小数只保留三位小数等,这种按指定的格式输出,被称为格式化输入输出。C++提供了两种方法可以进行输入/输出格式化的操作:一种是用IOS类成员函数控制格式,另一种是利用特定的操作符函数实现格式控制。
该方法要使用ios类中定义的用来控制格式的标志位和用来设置格式的成员函数。
????????在流类库根类ios base 中,有一个作为数据成员的格式控制变量,用来记录格式标志;通过设置标志,可以控制格式化输入/输出效果。各种格式标志被定义为枚举类型中的一组符号常量该枚举的定义如下:
enum
{
skipws=0x0001
left=0x0002
right=0x0004
internal=0x0008
dec==0x0010
oct=0x0020
hex=0x0040
showbase-0x0080
showpoint=0x0100
uppercase=0x0200
showpos=0x0400
scientific=0x0800
fixed=0x1000
unitbuf=0x2000
stdio=0x4000}
此枚举类型的每个成员分别定义标志位的一个位。其每个位表示不同的含义,引用这些格式标志时要在前面加上类名ios和域运算符“::”。
ios::skipws????????????0x0001? ? ? ? ? ?? 跳过输入中的空白符
ios::left??????????????0x0002?????????????????输出数据按输出域左对齐
ios::right????????0x0004? ? ? ? ? ? ? ? ? ?? 输出数据按输出域右对齐
ios::internal????????0x0008? ??数据的符号左对齐,数据本身右对齐,符号和数据之间为填充符
ios::dec????????????0x0010? ? ? ? ? ? ? ? ? 转换基数为十进制形式?ios::oct? ?0x0020? ?转换基数为八进制形式
ios::hex? ?0x0040? ?转换基数为十六进制形式
ios::showbase? ?0x0080? ? 输出的数值数据前面带有基数符号(0或0x)
ios::showpoint? ?0x0100? ?浮点数输出带有小数点
ios::uppercase? ?0x0200? ?用大写字母输出十六进制数值
ios::showpos? ?0x0400? ?正数前面带有符号“+”
ios::scientific? ?0x0800? ?浮点数输出待用科学表示法
ios::fixed? ?0x1000? ?使用定点数(小数)形式表示浮点数
ios::unitbuf? ?0x2000? ?完成输入操作后立即刷新流的缓冲区
ios::stdio? ?0x4000? ? 完成输入操作后刷新系统的stdout.stderr
IOS类提供了几个用于控制输入/输出格式的成员函数。
long flags()该函数返回当前标志字
long flags(long)该函数使用参数更新标志字,并返回更新前的标志字
long setf(long setbits,long field)该函数用来将field参数所指定的标志位清零,将setbits参数的标志位置1,并返回设置前的标志字
long setf (long)该函数用来设置参数的指定的标志位,并返回更新前的标志字
long unsetf (long)该函数用来清除参数的指定的标志位,并返回更新前的标志字
int width()该函数用来返回当前输入的数据宽度
int width(int)该函数用其参数设置当前输出的数据宽度,并返回更新前的宽度值
char fill()该函数用来返回当前所用的填充符
char fill(char)该函数用来设置当前的填充符为参数给定的字符,并返回更新前的填充符设置浮点数输出精度的成员函数
int (precision)该函数用来返回当前浮点数的有效数字的个数。浮点数的精度是用有效数字个数来表示
int precision(int)该函数用来设置当前浮点数输出时有效数字个数为该函数所制定的参数值,并返回更新的,个数越大,表示精度越高前的值
????????以上就是我对C++I/O流——(4)格式化输入/输出(第一节)的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++I/O流的理解,请持续关注我哦!!!