前言

头文件:<iomanip>且需要using namespace std

实例

1. 保留n位小数

ps:设置小数位数之后会保持有效到下一次设置小数位数

1
2
3
4
5
6
7
8
9
10
double num = 1.03456;
//第一种写法
cout << setiosflags(ios::fixed) << setprecision(2) << num << endl;

//第二种写法
cout.setf(ios::fixed);
cout << setprecision(2) << num << endl;

//第三种写法
cout << fixed << setprecision(2) << num << endl;

2. 输出数据占n位,不足用零填充

ps

  1. 设置输出宽度只对后面一个数据起作用,下一个被输出的数据仍然使用默认宽度
  2. 设置填充符之后会保持有效到下一次设置填充符
1
2
3
4
5
6
string str = "1";
cout << setw(4) << setfill('0') << str << "-" << str << endl;

// 也可以这样写
cout.width(4);
cout << setfill('0') << str << "-" << str << endl;

3. 靠左或靠右输出

ps:设置对齐方式之后会保持有效到下一次设置对齐方式

1
2
3
string str1 = "1";
string str2 = "2";
cout << setw(4) << left << str1 << setw(4) << str2 << endl;

C++默认格式

  1. 默认宽度:0(任何数据宽度均大于0,所以默认情况下任何数据都不需要进行填充)
  2. 默认填充符:空格
  3. 默认对齐:右对齐