C++中setw和setfill函数的结合应用
一、头文件
头文件为#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('*') 恢复填充字符为默认的空格。这种设置填充字符的方式在多次输出时很有用。

浙公网安备 33010602011771号