VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 922|回复: 1

C++标准输入输出流的控制符

[复制链接]
Syc 发表于 2017-9-4 22:48:04 | 显示全部楼层 |阅读模式
dec  设置整数的基数为10
hex  设置整数的基数为16
oct  设置整数的基数为8
setbase(n)  设置整数的基数为n(n只能是16,10,8之一)
setfill(c)  设置填充字符c,c可以是字符常量或字符变量
setprecision(n)  设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位数)形式和scientific(指数)形式输出时,n为小数位数。
setw(n)  设置字段宽度为n位。
setiosflags(ios::fixed)  设置浮点数以固定的小数位数显示。
setiosflags(ios::scientific)  设置浮点数以科学计数法(即指数形式)显示。
setiosflags(ios::left)  输出数据左对齐。
setiosflags(ios::right)  输出数据右对齐。
setiosflags(ios::shipws)  忽略前导的空格。
setiosflags(ios::uppercase)  在以科学计数法输出E和十六进制输出字母X时,以大写表示。
setiosflags(ios::showpos)  输出正数时,给出“+”号。
resetiosflags  终止已设置的输出格式状态,在括号中应指定内容。

2.用流对象的成员控制输出格式

流成员函数  与之作用相同的控制符  作用
precision(n)  setprecision(n)  设置实数的精度为n位。
width(n)  setw(n)  设置字段宽度为n位。
fill(c)  setfill(c)  设置填充字符c。
setf( )  setiosflags( )  设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。
ubsetf( )  resetiosflags( )  终止已设置的输出格式状态。

cout.width(10);
cout.setf(ios::hex);

3.设置格式状态的格式标志

格式标志  作用
ios::left  输出数据在本域宽范围内左对齐
ios::right  输出数据在本域宽范围内右对齐
ios::internal  数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充
ios::dec  设置整数的基数为10
ios::oct  设置整数的基数为8
ios::hex  设置整数的基数为16
ios::showbase  强制输出整数的基数(八进制以0打头,十六进制以0x打头)
ios::showpoint  强制输出浮点数的小点和尾数0
ios::uppercase  在以科学计数法输出E和十六进制输出字母X时,以大写表示
ios::showpos  输出正数时,给出“+”号。
ios::scientific  设置浮点数以科学计数法(即指数形式)显示
ios::fixed  设置浮点数以固定的小数位数显示
ios::unitbuf  每次输出后刷新所有流
ios::stdio  每次输出后清除 stdout,stderr

例子:
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.    int a=21;
  6.    cout.setf(ios::showbase); //设置输出时的基数符号
  7.    cout<<"dec:"<<a<<endl; //默认以十进制形式输出a
  8.    cout.unsetf(ios::dec); //终止十进制的格式设置
  9.    cout.setf(ios::hex); //设置以十六进制输出的状态
  10.    cout<<"hex:"<<a<<endl; //以十六进制形式输出a
  11.    cout.unsetf(ios::hex); //终止十六进制的格式设置
  12.    cout.setf(ios::oct); //设置以八进制输出的状态
  13.    cout<<"oct:"<<a<<endl; //以八进制形式输出a
  14.    cout.unsetf(ios::oct); //终止以八进制的输出格式设置
  15.    char *pt="China"; //pt指向字符串”china”
  16.    cout.width(10); //指定域宽为10
  17.    cout<<pt<<endl; //输出字符串
  18.    cout.width(10); //指定域宽为10
  19.    cout.fill('*'); //指定空白处以'*'填充
  20.    cout<<pt<<endl; //输出字符串
  21.    double pi=22.0/7.0; //计算pi值
  22.    cout.setf(ios::scientific);//指定用科学记数法输出
  23.    cout<<"pi="; //输出"pi="
  24.    cout.width(14); //指定域宽为14
  25.    cout<<pi<<endl; //输出"pi值
  26.    cout.unsetf(ios::scientific); //终止科学记数法状态
  27.    cout.setf(ios::fixed); //指定用定点形式输出
  28.    cout.width(12); //指定域宽为12
  29.    cout.setf(ios::showpos); //在输出正数时显示“+”号
  30.    cout.setf(ios::internal); //数符出现在左侧
  31.    cout.precision(6); //保留6位小数
  32.    cout<<pi<<endl; //输出pi,注意数符“+”的位置
  33.    return 0;
  34. }
复制代码


输出:
  1. dec:21 (十进制形式)
  2. hex:Oxl5 (十六进制形式,以0x开头)
  3. oct:025 (八进制形式,以O开头)
  4. China (域宽为10)
  5. *****china (域宽为10,空白处以'*'填充)
  6. pi=**3.142857e+00 (指数形式输出,域宽14,默认6位小数)
  7. ****3.142857 (小数形式输㈩,精度为6,最左侧输出数符“+”)
复制代码


说明:
1、成员函数width(n)和控制符setw(n)只对其后的第一个输出项有效。如果要求在输出数据时都按指定的同一域宽n输出,不能只调用一次width(n),而必须在输出每一项前都调用一次width(n)。
2、在表5中的输出格式状态分为5组,每一组中同时只能选用一种(例如,dec,hex和oct中只能选一,它们是互相排斥的),在用成员函数serf和控制符setiosflags设置输出格式状态后,如果想改设置为同组的另一状态,应当调用成员函数unsetf(对应于成员函数serf)或resetiosflags(对应于控制符sefiosflags),先终止原来设置的状态。然后再设置其他状态。
同理,程序倒数第8行的unsetf函数的调用也是不可缺少的。读者不妨上机试一试。
3、用serf函数设置格式状态时,可以包含两个或多个格式标志,由于这些格式标志在lOS类中被定义为枚举值,每一个格式标志以一个二进位代表,因此可以用“位或”运算符“I”组合多个格式标志
4、可以看到:对输出格式的控制,既可以用控制符(如例2),也可以用cout流的有关成员函数(如例3),二者的作用是相同的。控制符是在头文件mmamp中定义的,因此用控制符时,必须包含iomanip头文件。cout流的成员函数是在头文件iostream中定义的,因此只需包含头文件iostream,不必包含iomanip。许多程序人员感到使用控制符方便简单,可以在一个cout输出语句中连续使用多种控制符。
5、关于输山格式的控制,在使用中还会遇到一些细节问题,不可能在这里全部涉及。在遇到问题时,请查阅专门手册或上机试验一下即可解决。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

besteast 发表于 2017-9-8 21:55:14 | 显示全部楼层
aaaaaaaaaaaaaaaaaaaaa

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站

本版积分规则

展开

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )

返回顶部
x

VC驿站微信公众号cctry2009

GMT+8, 2017-12-14 04:30

Powered by Discuz!

© 2009-2017 cctry.com

快速回复 返回顶部 返回列表