一、以操纵子方式格式化

数据输入输出的格式控制使用系统头文件<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. 转--Windows下将jar包封装成服务程序

    http://www.cppblog.com/aurain/archive/2014/01/23/205534.aspx 1 准备 使用工具Procrun(http://commons.apache. ...

  2. centos7 环境搭建

    centos7 环境搭建    CentOS-7-x86_64-DVD-1511.iso    vmware121. 安装    使用iso安装系统:2. 修改yum源到光盘        先把光盘C ...

  3. 整理一些常用函数库PHP版本

    function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) { if(function_ex ...

  4. 2013年末、2014年初合辑——关于c语言的进阶学习

    太过于慵懒了,一个多月没有来自己的园子播种了.还是给自己找找借口吧,十二月末备战期末考试也是自己没心情码文字的理由吧,一月份理所当然地进入考试周,回家后做了个小手术也是客观上让自己不能静下心来回顾知识 ...

  5. 为Firefox 添加自定义搜索引擎

    网上流传的 about:config[对于新版已经失效] 以及到Firefox安装目录中修改 的方式不知道为什么我没有成功 现在来个简单点得! 首先我们需要一个可以自定义搜索引擎的插件 Organiz ...

  6. 批量删除Kindle library 中的不想要的书籍

    这是一个书签形式的脚本  有全选  批量删除什么的   亚马逊本身的删除太麻烦了 网上转的  原帖在这里http://tieba.baidu.com/p/2249582757 改进版本http://t ...

  7. rhApp遇到的项目问题

    1.如果有多人同时操作一个桌台的情况下,如何处理: 2.index页面点击清空的时候是否要把桌台一起清掉: 3.账单界面已结账的小单背景色是否需要和未结账的不同:

  8. 宣布与 NBC 合作直播索契冬季奥运

     奥运开始的那天早些时候,NBC 和 Microsoft 宣布选择 Windows Azure 媒体服务为 2014 年俄罗斯索契冬奥会提供现场直播.与以往不同,以往的冬奥会采用了有限的流,但本届 ...

  9. vs linq to db template

    linq to db template 支持sqlite. mysql .db2. accress. oracle. Firebird等多种数据库以linq方式操作数据. NuGet NuGet 是 ...

  10. BlogUI的使用