格式化输出输入一二事
Posted za-ya-hoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了格式化输出输入一二事相关的知识,希望对你有一定的参考价值。
前言
输出输入流可以通过各种方式设置多种多样的格式化操作,给输出输入提供多种选项。
每种格式化将输出将通过两种方式进行描述,一种是操纵符,一种是成员函数。操作符一般在流中插入以进行格式化输出,成员函数则是通过对象调用起作用。
注意,流操纵符一般都在iomanip.h
中,而成员函数一般都在iostream.h
中。
进制相关
整型数字的显示格式
操纵符
设置进制
int n = 100;
cout << dec << n << endl; //十进制
cout << oct << n << endl; //八进制
cout << hex << n << endl; //十六进制
cout << setbase(10) << n << endl; //通过参数来设置进制
100
144
64
100
- 设置之后会一直起作用,具有黏性
显示基数
cout << showbase; //调用显示基数
int n = 100;
cout << dec << n << endl;
cout << oct << n << endl;
cout << hex << n << endl;
cout << noshowbase; //重置设定
cout << hex << n << endl;
100
0144
0x64
64
浮点精度
浮点数显示的精度,一般默认是6,可设置
操纵符
使用
const int PI = 3.14159;
for (int i = 0; i < 6; i++)
cout << setprecision(i) << PI << endl; //设定显示精度
输出
3
3.1
3.14
3.141
3.1415
3.14159
使用事项
- 会一直影响后面的输出直到下一次设置精度操作
成员函数
使用
const int PI = 3.14159;
for (int i = 0; i < 6; i++){
cout.precision(i);
cout << PI << endl;
}
输出
3
3.1
3.14
3.141
3.1415
3.14159
使用事项
- 会一直影响后面的输出直到下一次设置精度操作
域宽
域宽也就是输出值所占的字符数或者是可以输入的最大字符数,如果输出的字符不够在左边用空格(默认)来凑
操纵符
使用
int widthValue = 4;
char sentence[10];
while (cin >> setw(5) >> sentence) { //设定每次输入最多5个字符
cout << setw(widthValue++) << sentence << endl;
}
输入
This is a test of the width member function
输出
This
is
a
test
of
the
widt
h
memb
er
func
tion
使用事项
- 仅能影响下一次的输入或输出,不具备黏性
- 注意是默认的对齐方式,即右对齐左边填充字符
成员函数
使用
int widthValue = 4;
char sentence[10];
cin.width(5); //设置输入的宽度,即一次最多读入多少字符
while (cin >> sentence) {
cout.width(widthValue++); //设置输出的宽度
cout << sentence << endl;
cin.width(5); //需要注意的是,因为域宽的设置是不具备黏性的,所以需要一直设置
}
输入
This is a test of the width member function
输出
This
is
a
test
of
the
widt
h
memb
er
func
tion
使用事项
- 仅能影响下一次的输入或输出,不具备黏性
对齐方式
输出字符的对齐方式
操纵符
使用
cout << left << 输出内容;
cout << right << 输出内容;
使用事项
- 具有黏性
- 为了能看出效果一般和setw搭配使用
- left是使域左对齐并在右边填充填充字符,right是使域右对齐并在左边填充字符
填充字符的设置
指定对齐域的填充字符,如果没有被指定,则使用空格符填充
操纵符
使用
cout << setfill(char c) << 输出内容;
使用事项
- 具有黏性
- 一般和设置域宽和对齐方式一起使用
成员函数
使用
cout.fill(char c);
cout << 输出内容;
使用事项
- 具有黏性
- 一般和设置域宽和对齐方式一起使用
其他常见操纵符
流操纵符 | 适用流 | 描述 |
---|---|---|
skipws | 输入流 | 跳过输入流的空白字符,使用流操纵符noskipws重置设定 |
showpoint | 输出流 | 指明浮点数必须显示小数点即使全部是0,同长使用fixed流操纵符来确保小数点右边数组的位数,可以使用noshowpoint重置 |
showpos | 输出流 | 在正数前显示+,可以使用noshowpos重置 |
fixed | 输出流 | 以定点小数的形式显示浮点数,并指定小数点右边的位数 |
scientific | 输出流 | 以科学计数法的输出显示浮点数 |
uppercase | 输出流 | 指明当显示十六进制数时使用大写字母,可以使用nouppercase重置 |
以上是关于格式化输出输入一二事的主要内容,如果未能解决你的问题,请参考以下文章