一、以操纵子方式格式化

数据输入输出的格式控制使用系统头文件<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. objective-C学习笔记(十一)类别和扩展

    类别 类别是对外的,外部都可以访问 类别是在没有源代码或者基于某些特定场合的情况下,为一个类增加功能(方法).或者用于给一个特别大的类进行分割. 命名规则:类名+扩展方法,如NSString 可以添加 ...

  2. Android ListView 删除动画

    Android 的ListView在删除条目时,被删除的条目直接消失,比较生硬,在此实现一下删除动画,大家一起探讨:主要实现原理即是通过Animator来实现被删除条目的动画效果,然后在动画结束时通过 ...

  3. 10247 - Complete Tree Labeling(递推高精度)

    Problem B Complete Tree Labeling! Input: standard input Output: standard output Time Limit: 45 secon ...

  4. 微信 php 获取ticket

    <?phpheader('content-type:text/html; charset=utf8');define('TOKEN', 'youtoken'); // TOKENdefine(' ...

  5. PHP PDO select语句结果行数计算

    PDO有一个函数PDOStatement::rowCount返回上一个SQL语句影响的行数. rowCount函数对于DELETE, INSERT, 或者UPDATE语句的结果是正确的,但对于sele ...

  6. DataList嵌套绑定例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataList控件.asp ...

  7. Session()

    如何使用 Session Java Api 只给我们一种方式来 获取 当前会话相关的 session: HttpSession session = request.getSession(); //或 ...

  8. Java设计模式模式观测(Observer Pattern)

    Observer Pattern 设计模式通常用于.这是一个事件侦听器模型. 该模型有两个作用,一个是Subject, 有一个Observer.Subject 保存多个Observer参考,一旦一个特 ...

  9. 禁用Visual Studio 2013的Browser Link功能

    禁用Visual Studio 2013的Browser Link功能 GET http://localhost:37478/7fd25f8af33f443494e765be19be6240/brow ...

  10. :before :after

    #p1:before{ content: "哈哈哈 "; color: red;}#p1:after{ content: "哈哈哈"; color: #452d ...