一、头文件
头文件为#include <iomanip>
其中io代表输入输出,manip是manipulator(操纵器)的缩写
iomanip的作用:
主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样。
二、setw函数
setw
是 C++ 中 <iomanip>
头文件中定义的一个格式控制符。它用于设置输出流中下一个字段的宽度(即列的宽度)。具体而言,setw
允许你指定输出流中下一个字段(例如,一个整数或字符串)的最小宽度,如果该字段的实际宽度小于指定的宽度,则在左侧或右侧用填充字符进行填充。
代码示例如下
#include <iostream> #include <iomanip> using namespace std; int main() { int num = 10; cout<<setw(10)<<num<<endl; cout<<"0123456789"<<endl; return 0; }
在这个例子中,setw(10)
指定了下一个字段(num
)的宽度为 10,如果 num
的宽度小于 10,则在左侧用空格进行填充,使总宽度为 10。
三、setfill函数
setfill
是 C++ 中 <iomanip>
头文件中定义的另一个格式控制符,它用于设置填充字符。
当结合 setw
使用时,setfill
允许你指定用于填充字段的字符。默认情况下,填充字符是空格。
函数示例:
#include <iostream> #include <iomanip> using namespace std; int main() { int num = 10; cout<<setw(10)<<num<<endl; cout<<"0123456789"<<endl; cout<<setw(10)<<setfill('*')<<num<<endl; return 0; }
在这个例子中,setfill('*')
设置了填充字符为 ''. 如果 num
的宽度小于 10,则在左侧用 '*'
进行填充,使总宽度为 10。
你可以在 setw
和实际输出值之间使用 setfill
来指定填充字符。在上面的例子中,setfill('*')
只影响其后的一个 setw(10)
,而不是整个输出流。
setfill
还可以与其他输出流操纵符一起使用,以改变填充字符的范围。
#include <iostream> #include <iomanip> using namespace std; int main() { int num = 10; cout<<setw(10)<<num<<endl; cout<<"0123456789"<<endl; cout<<setw(10)<<setfill('*')<<num<<endl; cout<<setw(10)<<setfill('*')<<num<<setw(10)<<"test"<<setfill('*')<<endl; return 0; }
在这个例子中,std::setfill('*')
恢复填充字符为默认的空格。这种设置填充字符的方式在多次输出时很有用。