一、以操纵子方式格式化

数据输入输出的格式控制使用系统头文件<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. 编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。

    package cn.itcast; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public ...

  2. CRM中直接创建SAP订单的实施方案记录

    后台生成订单按钮JS do_alert('正在生成SAP订单,暂停所有操作,同时请不要关闭本窗口!'); var hefid = clientData.urlArgs.entityId; var ur ...

  3. C——货物管理系统

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> ...

  4. (Problem 70)Totient permutation

    Euler's Totient function, φ(n) [sometimes called the phi function], is used to determine the number ...

  5. 基于Visual C++2013拆解世界五百强面试题--题4-double转换成字符串

    请用C语言实现将double类型数据转换成字符串,再转换成double类型的数据.int类型的数据 想要完成题目中的功能,首先我们的先对系统存储double的格式有所了解. 浮点数编码转换使用的是IE ...

  6. HDU 1147 Pick-up sticks

    题解:每放一根棍子,都判断一下它与它前面的且在顶端的棍子是否相交,相交的话则将相应的棍子从解空间中除去. #include <cstdio> const double eps=1e-14; ...

  7. EGL接口 简单介绍

    from http://lyodev.appspot.com 第二章 EGL 接口 EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口.本章主要讲述 OpenGL ES 的 ...

  8. PE框架学习之道:PE框架——发送报文流程

    PE框架发送报文,适用于PE及VX技术 步骤: 1.在action中使用发送报文,要指定报文在router端的交易名称 2.如果使用supe.execute(context)来发送,不需要第一步 3. ...

  9. HDU Computer Transformation1041 题解

    Problem Description A sequence consisting of one digit, the number 1 is initially written into a com ...

  10. SharePoint需要开启的网站集功能

    1. 管理网站功能 2. 网站集功能