在学习C++这么久以来,虽然一直使用着输入输出流,但是对它们却并没有进行系统的了解和学习。在最近,将它们的一些基本用法进行了一次简单的归纳。

使用ios类的成员函数进行格式控制

格式状态字

C++可以对流对象的输入输出进行格式控制,以此来完成各种各样的格式需求。在ios的public部分定义了一个枚举,它的每个成员都是一个状态标志位:

1)skipws (默认设置)
从一个流中输入时,将跳过开头的空白字符(空格,制表符,换行符)。
2)left、right、internal (默认 right)
left:输出左对齐,域宽的其余部分用填充符填充;
right:同left相反;
internal:数值的符号左对齐,数值本身右对齐,之间为填充符。
3)dec、oct、hex (默认 dec)
十进制、八进制、十六进制。
4)showbase (默认不设置)
基指示符,若同时设置hex,则数据会加上前缀 “0x”。
5)showpoint (默认不设置)
强制显示浮点型数据小数点后的无效0。
6)uppercase (默认不设置)
字母大写显示。
7)showpos (默认不设置)
显示正数时,前面加“+”进行强调。
8)scientific、fixed(编译程序会根据情况选择)
scientific:浮点数用科学记数法输出;
fixed:浮点数按常规显示。
接下来两个格式状态字与缓冲区有关
9)unitbuf
输出后立即刷新所有流,即把输出流写到与流相连的物理设备上。
10)stdio
每次输出后,刷新stdout和stderr。
stdout:输出方式为行缓冲;
stderr:不带缓冲。

用于控制输入输出格式的成员函数

函数名 作用
long ios::flags( ) 返回当前格式状态字
long ios::flags(long) 设置格式状态字并返回
long ios::setf(long) 追加指定的格式状态字
long ios::unsetf(long) 清除指定的格式状态字
int ios::width() 返回当前显示数据的域宽
int ios::width(int) 设置域宽并返回原域宽
char ios::fill() 返回当前填充字符
char ios::fill(char) 设置填充字符并返回原填充字符
int ios::precision() 返回当前浮点数的精度
int ios::precision() 设置浮点数精度并返回原精度

格式状态字

long f;
int a = 10;
double b = 100.00;
f = cout.flags();cout << "The flags's result is " << f << endl;cout << "a = " << a << "\t b = " << b << endl;cout.setf(ios::showpoint);cout << "b = " << b << endl;cout.unsetf(ios::showpoint | ios::dec);cout.setf(ios::hex | ios::showbase);cout << "十六进制:" << endl;cout << "a = " << a << endl;cout << "b = " << b << endl;cout.setf(ios::scientific);cout << "科学计数法:" << endl;cout << "a = " << a << endl;cout << "b = " << b << endl;cout.setf(ios::uppercase);cout << "字母大写:" << endl;cout << "a = " << a << endl;cout << "b = " << b << endl;

vs2017运行,控制台输出结果:

①在使用格式状态字设置函数时,可使用“|”进行同时设置;
②进制变换对浮点数无任何作用;
③在进行进制变换时,必须先清除当前进制,再设置新的进制。

填充字符与域宽

 int a = 100;double b = 12.30895;int length = cout.width();
cout <<"The initial width is "<< length << endl;cout.width(2);cout << a << endl;cout.width(10);cout.fill('#');cout << a << endl;cout << a << endl;cout << "未调整精度:" << endl;cout << b << endl;cout.precision(10);cout << "调整后:" << endl;cout.width(10);cout << b << endl;cout << b << endl;cout.setf(ios::showpoint);cout << "强制显示无效0:" << endl;cout << b << endl;

vs2017运行,控制台输出结果:

①初始域宽为0,数据按自身长度打印;
②当设置域宽长度小于数据自身长度时,并不会改变数据的输出,
小数点也在域宽中占一个长度;
③当width()设置域宽后,只对之后的第一个输出有影响,而fill()与precision()一直有效;
④默认填充字符为空格,默认有效数字为6位。

C++ I/O 流 格式控制(上)相关推荐

  1. C++知识点16——使用C++标准库(IO流格式控制)

    1.IO流的格式控制 1.1 指定整数值的进制 void setdatabase() {cout<<20<<'.'<<1024<<endl;cout&l ...

  2. C++ I/O流 格式控制(下)

    使用I/O操作符进行格式控制 定义在iostream头文件中不带参数的操纵符 操纵符 作用 endl 输出时换行并刷新流 ends 输出时在字符串后插入空字符(NULL)作为尾符 flush 刷新,把 ...

  3. C++流操纵算子(格式控制)

    输入/输出的数据没有指定格式,它们都按缺省的格式输入/输出.然而,有时需要对数据格式进行控制.这时需利用ios类中定义的格式控制成员函数,通过调用它们来完成格式的设置. ios类的格式控制函数如下所示 ...

  4. input file 文件上传,js控制上传文件的大小和格式

    文件上传一般是用jquery的uploadify,比较好用.后面会出文章介绍uploadify这个插件. 但是,有时候为了偷懒,直接就用input 的file进行文件和图片等的上传,input fil ...

  5. c语言如何输出无限小数,printf的格式控制(C语言)

    printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少. ②-:有-表示左对齐输出,如省略表示右对齐输出. ...

  6. 2019.11.12-最新大华摄像机SDK开发,预览实时视频并指定码流格式保存到文件中(可观看)

    大华摄像机SDK开发,预览实时视频并指定码流格式保存到文件中 由于本人最近在开发大华摄像机,特此分享一些经验给到各位开发朋友,本次实例是关于大华摄像机的实时预览视频码流保存到文件中的Demo,本人还开 ...

  7. C++输出流的格式控制

    文章转自:http://hi.baidu.com/rocketxyf/blog/item/2562473114dbad17eac4af5a.html inline SMANIP(long)     r ...

  8. PAT甲级1061 Dating:[C++题解]字符串处理(C语言格式控制牛逼!)

    文章目录 题目分析 题目链接 题目分析 题意重述:四个字符串,前两个字符串是一组:求 日期和小时: 后两个字符串是一组:求分钟. 对于前两个字符串: 需要统计两次,位置相同并且是相同的字符. 第一个符 ...

  9. 计算机中的 marshal 是什么意思?(列集:将数据从某种格式存为流格式的操作)(序列化)(marshalling、unmarshalling散集)

    今天看dbus框架,看到一个marshal method call to message不知道是什么意思 IPC进程间通信 D-Bus(Desktop Bus)快速入门(以libdbus-glib库为 ...

最新文章

  1. 中国移动OnetNet云平台 使用以太网传输数据流步骤
  2. 深度学习笔记5:Building Deep Networks for Classification
  3. GPU 实现 RGB -- YUV 转换 (OpenGL)
  4. C#学习笔记四: C#3.0自动属性匿名属性及扩展方法
  5. golang nats request/reply模式
  6. Cassandra 数据模型
  7. 软考必备资料大放送,全科目软考资料都给你备好了!
  8. cesium api 学习之旋转角 heading(yaw)、pitch、roll
  9. Affinity Designer笔记:常用快捷键
  10. ftp上传工具绿色版,五款ftp上传工具绿色版好用推荐
  11. 漫画:设计模式六大原则(上)
  12. 30个非常流行的提示信息插件(jQuery Tooltip Plugin)
  13. 制作linux包 u盘安装
  14. 灰色关联分析(系统分析+综合评价)
  15. 抖音近期比较火的挤地铁教程+源码
  16. Python中的装饰器的简单介绍02
  17. 从零开始学习演讲|职场小白演讲成长之路
  18. CCF-CSP 201703-1 分蛋糕 C语言 满分
  19. 四川专科计算机学院多少分录取分数线,四川多少分能上大专,四川大专院校最低分数线...
  20. Science Advances|一种新型的多药物治疗使青蛙能够肢体再生

热门文章

  1. Docker快速部署PostgreSQL服务
  2. 小米无缝切换60hz/90hz/120hz/144hz刷新率!
  3. openlayers4 入门开发系列之地图工具栏篇(附源码下载)
  4. java 课后习题 奇数排前
  5. 【HTML】iframe嵌套界面自适应,可高度自由收缩
  6. python抓取网站乱码_如何使用Python抓取网站
  7. 从头开始开发gis_DevRel工程师一:从头开始建立开发人员关系团队
  8. go redis 清空所有值_【大厂面试】面试官看了赞不绝口的Redis笔记二
  9. ubuntu16.04备份和恢复系统
  10. Python3 装饰器解析