一、以操纵子方式格式化

数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符。把它们作为插入操作符<<的输出对象即可。如setiosflags、setw、setfill、setprecision、hex、oct等。

(一)、常用的流操纵算子:

(二)、ios类的枚举常量

 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

 
#include <iostream>


#include <iomanip>

using 
namespace std;

// 通过操纵子方式进行格式化输出
// 宽度控制
// 对齐控制
// 填充控制
// 精度控制
// 进制输出

int main(
void)

{

    
//system("chcp 936");
    
int n = 
;

    
double d = 
.
;

    
double d2 = 
.
;

cout << 
"=================宽度控制=====================" << endl;

    cout << n << 
'#' << endl;

    cout << setw(
) << n << 
'#' << n << endl;      
// 宽度控制不会影响下一个输出

cout << 
"=================对齐控制=====================" << endl;

    cout << setw(
) << setiosflags(ios::left) << n << 
'#' << endl;

    cout << setw(
) << n << 
'#' << endl;           
// 对齐控制会影响下一个输出
    
//cout<<setw(10)<<setiosflags(ios::right)<<n<<'#'<<endl;
    cout << setw(
) << resetiosflags(ios::left) << n << 
'#' << endl; 
//去除左对齐

cout << 
"=================填充控制=====================" << endl;

    cout << setw(
) << setfill(
'?') << n << 
'#' << endl;

    cout << setw(
) << n << 
'#' << endl;           
// 填充控制会影响下一个输出
    cout << setw(
) << setfill(
' ') << n << 
'#' << endl;

cout << 
"=================精度控制=====================" << endl;

    cout << setprecision(
) << d << endl; 
//有效数字
    cout << setprecision(
) << d2 << endl;

cout << setiosflags(ios::fixed);

    cout << setprecision(
) << d << endl; 
// 小数点后面位数
    cout << setprecision(
) << d2 << endl;

cout << 
"=================进制输出=====================" << endl;

cout << n << endl;

    cout << oct << n << endl;

    cout << hex << n << endl;

    cout << endl;

cout << setiosflags(ios::showbase); 
//八进制加前缀0,十六进制加前缀0x
    cout << dec << n << endl;

    cout << oct << n << endl;

    cout << hex << n << endl;

cout << endl;

    cout << setbase(
) << n << endl; 
//八进制加前缀0,十六进制加前缀0x
    cout << setbase(
) << n << endl;

    cout << setbase(
) << n << endl;

return 
;

}

二、以类成员函数方式格式化

通过调用流的成员函数控制格式,如setf、unsetf、width、fill、precision等。优点是在设置格式同时,可以返回以前的设置,便于恢复原来的设置。

ios类提供成员函数对流的状态进行检测和进行输入输出格式控制等操作:

 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

 
#include <iostream>


//#include <iomanip>

using 
namespace std;

// 通过成员函数方式进行格式化输出
// 宽度控制
// 对齐控制
// 填充控制
// 精度控制
// 进制输出

int main(
void)

{

    
//system("chcp 936");
    
int n = 
;

    
double d = 
.
;

    
double d2 = 
.
;

cout << 
"=================宽度控制=====================" << endl;

    cout << n << 
'#' << endl;

    cout.width(
);

    cout << n << 
'#' << n << endl;                  
// 宽度控制不会影响下一个输出

cout << 
"=================对齐控制=====================" << endl;

    cout.width(
);

    cout.setf(ios::left);

    cout << n << 
'#' << endl;

    cout.width(
);

    cout << n << 
'#' << endl;               
// 对齐控制会影响下一个输出
    
//cout.width(10);
    
//cout.setf(ios::right);
    
//cout<<n<<'#'<<endl;

cout.width(
);

    cout.unsetf(ios::left);

    cout << n << 
'#' << endl;

cout << 
"=================填充控制=====================" << endl;

    cout.width(
);

    cout.fill(
'?');

    cout << n << 
'#' << endl;

cout.width(
);

    cout << n << 
'#' << endl;               
// 填充控制会影响下一个输出

cout.width(
);

    cout.fill(
' ');

    cout << n << 
'#' << endl;

cout << 
"=================精度控制=====================" << endl;

    cout.precision(
);

    cout << d << endl;

    cout.precision(
);

    cout << d2 << endl;

cout.setf(ios::fixed);

    cout.precision(
);

    cout << d << endl;

    cout.precision(
);

    cout << d2 << endl;;

cout << 
"=================进制输出=====================" << endl;

cout.setf(ios::showbase);

    cout << n << endl;

    cout.unsetf(ios::dec);

    cout.setf(ios::oct);

    cout << n << endl;

cout.unsetf(ios::oct);

    cout.setf(ios::hex);

    cout << n << endl;

return 
;

}

参考:

C++ primer 第四版
Effective C++ 3rd
C++编程规范

从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化 以ios类成员函数方式格式化)的更多相关文章

  1. 从零开始学C++之IO流类库(三):文件的读写、二进制文件的读写、文件随机读写

    一.文件的读写 如前面所提,流的读写主要有<<, >>, get, put, read, write 等操作,ofstream 继承自ostream, ifstream 继承自 ...

  2. 从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态

    一.文件流 ofstream,由ostream派生而来,用于写文件 ifstream,由istream派生而来, 用于读文件 fstream,由iostream派生而来,用于读写文件 二.打开文件 说 ...

  3. 代码实现:当我们下载一个试用版软件,没有购买正版的时候,每执行一次就会提醒我们还有多少次使用机会用学过的IO流知识,模拟试用版软件,试用10次机会,执行一次就提示一次您还有几次机会,如果次数到了提示请购买正版

    package com.loaderman.test; import java.io.BufferedReader; import java.io.FileReader; import java.io ...

  4. Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Properties集合、打印流)

    1.IO简介 IO(输入输出)通过java.io包下的类和接口来支持,包下包括输入.输出两种IO流,每种输入输出流又可分为字符流和字节流两大类. 2.File类 File类是io包下与平台无关的文件和 ...

  5. 从零开始学 Web 之 Vue.js(四)Vue的Ajax请求和跨域

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  6. Java中的IO流(四)

    上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...

  7. 【重学Java】IO流

    IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...

  8. java基础(二十一)IO流(四)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  9. 从零开始学 Web 之 移动Web(四)实现JD分类页面

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

随机推荐

  1. C#操作Office.word(一)

    该文章主要是讲述如何使用VS2010创建word文档,因为在项目中我们可能需要点击一个按钮把数据库中的项目表单或图片显示到word文档中,因此该文章主要分析如何使用VS2010创建word文档并填写相 ...

  2. Hibernate学习之hql查询语句

    *  页面上数据的字段和数据库中字段差不多,这个时候,采用迫切连接  结构比较好,如果页面上的字段很少,要按照需求加载数据,采用带构造函数的select查询 实例讲解:转自:http://www.cn ...

  3. Android 开发笔记 “The constructor AlertDialog.Builder(new View.OnKeyListener(){}) is undefined”

    1.The constructor AlertDialog.Builder(new View.OnKeyListener(){}) is undefined等,应该有很多类似问题 比如你的源码文件名是 ...

  4. Android 开发笔记“调用.net webservice遇到的问题”

    1.An exception occurred: org.ksoap2.SoapFault SoapFault - faultcode: 'soap:Server' faultstring: '服务器 ...

  5. selenium 学习笔记 ---新手学习记录(2) 问题总结

    今天研究了下ie.chrome.firefox浏览器执行脚本 1.首先firefox下执行时,我是安装在d盘了,所以要更改路径 //如果火狐浏览器没有默认安装在C盘,需要制定其路径 System.se ...

  6. DC游戏《斑鸠》原创赏析[转载]

    游戏背景:      凤来之国本来只是边远地区的一个小国.但现在他们却自称为得到“神之力”的“神通者”,在“选民思想”“和平统一”之类的名义下开始了对各地的武力侵略.      事情的起因是因为凤来之 ...

  7. angularjs学习总结(快速预览版)

    对html标签的增强 -> 指令 指令的本质是什么 声明的方式调用相应的脚本,实现一些操作,声明的所在的dom就是脚本的执行上下文? 自定义标签 -- 标签指令自定义属性 -- 属性指令特定格式 ...

  8. CreateFile,ReadFile等API详解(或者说MSDN的翻译)

    一.*****CreateFile***** 这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象:控制台对象.通信资源对象.目录对象(只能打开).磁盘设备对象.文件对象.邮槽对象.管道 ...

  9. 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)

    一.图片显示 图片显示的方法: 1.  直接写程序 2.  第3方库 3.  调用COM组件的IPicture接口 4.  使用MFC的CPictureHolder类 5.  使用GDI+的CImag ...

  10. android Json解析详解(详细代码)

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...