C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed
目录
四种操纵符简要介绍
setprecision基本用法
setfill的基本用法
fixed的基本用法
setw基本用法
以下是一些常见的用法和示例:
1. 设置字段宽度和填充字符
2. 设置字段宽度和对齐方式
3. 设置字段宽度和精度
4. 设置字段宽度和填充字符,结合对齐方式
5. 设置字段宽度和填充字符,结合对齐方式和精度
总结
收藏加关注,观看不迷路
四种操纵符简要介绍
setw 是 C++ 中用于控制输出格式的操纵符,它用于设置输出字段的宽度,默认右对齐。当输出值的字符数少于指定的字段宽度时,剩余的部分默认用空格填充,或其他指定的填充字符填充。setw 的作用是确保输出值占据指定的宽度,从而实现对齐和格式化输出。
setfill 是 C++ 中用于控制输出格式的操纵符,它用于设置填充字符。当输出字段的宽度大于实际输出值的字符数时,setfill 指定的字符将用来填充剩余的空间,常与setw结合使用。默认的填充字符是空格。
setprecision 是 C++ 中用于控制浮点数输出精度的操纵符。它通常与 iostream 库一起使用,用于设置浮点数输出时小数点后的位数。setprecision 的作用是设置后续浮点数输出的精度,直到下一次改变精度为止。
fixed 是 C++ 中用于设置浮点数输出格式的操纵符。它用于指定浮点数以固定小数点格式输出,而不是科学计数法格式。fixed 通常与 setprecision 一起使用,以控制小数点后的位数。
setprecision基本用法
#include<iostream> #include<iomanip> // 包含用于控制输出格式的头文件 using namespace std; int main() { double num = 123.456789; // 设置精度为3位小数 cout << setprecision(3) << num << endl; // 设置精度为5位小数 cout << setprecision(5) << num << endl; return 0; }
输出
123.457 123.45679
详细解释
setprecision(n)
:
设置浮点数输出时小数点后的位数为
n
。
n
是一个整数,表示小数点后的位数。精度设置的范围:
setprecision
设置的精度范围包括小数点后的所有数字,但不包括小数点前的数字。四舍五入:
当设置的精度小于实际小数位数时,
setprecision
会自动进行四舍五入。默认精度:
如果不使用
setprecision
,默认的精度通常是6位小数
setfill的基本用法
#include<iostream> #include<iomanip> // 包含用于控制输出格式的头文件 using namespace std; int main() { int a = 1, b = 123, c = 4567; // 设置字段宽度为10,填充字符为'*' cout << setw(10) << setfill('*') << a << endl; cout << setw(10) << setfill('*') << b << endl; cout << setw(10) << setfill('*') << c << endl; return 0; }
输出
*********1 *******123 ******4567
详细解释
setfill(char)
:
设置填充字符为指定的字符
char
。例如,
setfill('*')
将填充字符设置为*
。
setw(int)
:
设置输出字段的宽度为指定的整数
int
。例如,
setw(10)
将输出字段的宽度设置为 10 个字符。填充字符的作用:
当实际输出值的字符数少于指定的字段宽度时,剩余的部分将用填充字符填充。
默认的填充字符是空格,但可以通过
setfill
改变。
fixed的基本用法
#include<iostream> #include<iomanip> // 包含用于控制输出格式的头文件 using namespace std; int main() { double num = 123.456789; // 设置浮点数以固定小数点格式输出,精度为3位小数 cout << fixed << setprecision(3) << num << endl; // 设置浮点数以固定小数点格式输出,精度为5位小数 cout << fixed << setprecision(5) << num << endl; return 0; }
输出
123.457 123.45679
详细解释
fixed
:
设置浮点数以固定小数点格式输出。
在固定小数点格式下,浮点数的小数部分会显示指定的位数,不足的部分会用零填充。
setprecision(n)
:
设置浮点数输出时小数点后的位数为
n
。
n
是一个整数,表示小数点后的位数。四舍五入:
当设置的精度小于实际小数位数时,
setprecision
会自动进行四舍五入。默认格式:
如果不使用
fixed
或scientific
,浮点数的输出格式默认是科学计数法。
setw基本用法
#include<iostream> #include<iomanip> // 包含用于控制输出格式的头文件 using namespace std; int main() { int a = 1, b = 123, c = 4567; // 设置字段宽度为10 cout << setw(10) << a << endl; cout << setw(10) << b << endl; cout << setw(10) << c << endl; return 0; }
输出
1 123 4567
详细解释
setw(int)
:
设置输出字段的宽度为指定的整数
int
。例如,
setw(10)
将输出字段的宽度设置为 10 个字符。字段宽度的作用:
当实际输出值的字符数少于指定的字段宽度时,剩余的部分将用空格填充。
默认的填充字符是空格,但可以通过
setfill
改变。对齐方式:
默认情况下,输出值是右对齐的。
可以通过
left
或right
操纵符改变对齐方式。
以下是一些常见的用法和示例:
1. 设置字段宽度和填充字符
#include<iostream> #include<iomanip> using namespace std; int main() { int a = 1, b = 123, c = 4567; // 设置字段宽度为10,填充字符为'*' cout << setw(10) << setfill('*') << a << endl; cout << setw(10) << setfill('*') << b << endl; cout << setw(10) << setfill('*') << c << endl; return 0; }
输出
*********1 *******123 ******4567
2. 设置字段宽度和对齐方式
#include<iostream> #include<iomanip> using namespace std; int main() { int a = 1, b = 123, c = 4567; // 设置字段宽度为10,右对齐 cout << setw(10) << right << a << endl; cout << setw(10) << right << b << endl; cout << setw(10) << right << c << endl; // 设置字段宽度为10,左对齐 cout << setw(10) << left << a << endl; cout << setw(10) << left << b << endl; cout << setw(10) << left << c << endl; return 0; }
输出
1 123 4567 1 123 4567
3. 设置字段宽度和精度
#include<iostream> #include<iomanip> using namespace std; int main() { double a = 1.23456, b = 123.456, c = 4567.89; // 设置字段宽度为10,精度为2位小数 cout << setw(10) << setprecision(2) << fixed << a << endl; cout << setw(10) << setprecision(2) << fixed << b << endl; cout << setw(10) << setprecision(2) << fixed << c << endl; return 0; }
输出
1.23 123.46 4567.89
4. 设置字段宽度和填充字符,结合对齐方式
#include<iostream> #include<iomanip> using namespace std; int main() { int a = 1, b = 123, c = 4567; // 设置字段宽度为10,填充字符为'*',右对齐 cout << setw(10) << setfill('*') << right << a << endl; cout << setw(10) << setfill('*') << right << b << endl; cout << setw(10) << setfill('*') << right << c << endl; // 设置字段宽度为10,填充字符为'*',左对齐 cout << setw(10) << setfill('*') << left << a << endl; cout << setw(10) << setfill('*') << left << b << endl; cout << setw(10) << setfill('*') << left << c << endl; return 0; }
输出
*********1 *******123 ******4567 1********* 123******* 4567******
5. 设置字段宽度和填充字符,结合对齐方式和精度
#include<iostream> #include<iomanip> using namespace std; int main() { double a = 1.23456, b = 123.456, c = 4567.89; // 设置字段宽度为10,填充字符为'*',右对齐,精度为2位小数 cout << setw(10) << setfill('*') << right << setprecision(2) << fixed << a << endl; cout << setw(10) << setfill('*') << right << setprecision(2) << fixed << b << endl; cout << setw(10) << setfill('*') << right << setprecision(2) << fixed << c << endl; // 设置字段宽度为10,填充字符为'*',左对齐,精度为2位小数 cout << setw(10) << setfill('*') << left << setprecision(2) << fixed << a << endl; cout << setw(10) << setfill('*') << left << setprecision(2) << fixed << b << endl; cout << setw(10) << setfill('*') << left << setprecision(2) << fixed << c << endl; return 0; }
输出
********1.23 ******123.46 *****4567.89 1.23******** 123.46****** 4567.89*****
总结
setfill(char): ◦ 设置填充字符为指定的字符 char。
setw(int): ◦ 设置输出字段的宽度为指定的整数 int。
right
:设置右对齐。
left
:设置左对齐。
setprecision(int)
:设置浮点数的精度为指定的整数int。
fixed
:设置浮点数以固定小数点格式输出。这些操纵符可以组合使用,以实现各种复杂的输出格式,仅适用cout输出,若用C语言风格printf输出,无需上述操纵符。
收藏加关注,观看不迷路