在C++中,setw(int n)
用来控制输出间隔。
例如:
cout<<'s'<<setw(8)<<'a'<<endl;
则在屏幕显示
s a
//s与a之间有7个空格,setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出。
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
!!!注意:
setw(int n)只是对直接跟在<<后的输出数据起作用,而在之后的<<需要在之前再一次使用setw;
(Sets the number of characters to be used as the field width for the next insertion operation.设置要用作下一次插入操作的字段宽度的字符数。)
n是在输出时分配了n个字符的输出宽度,然后默认的是在n个字符宽度中右对齐输出,可以使用setiosflags(iOS::left)设置为左对齐输出,可以使用setfill(‘char x’)使用x来填充空下的空格;示例如下。(同学推荐了一个不错的网站,cplusplus.com在其中直接搜索iomanip之后就可以查到在这个头文件中包含的所有成员函数)
#include <iostream>
#include <iomanip>
using namespace std;
void main(){
cout << setw(10) << setiosflags(ios::left) <<setfill('*') << 10 << endl;
cout << setw(10) << setiosflags(ios::right) <<setfill('*') << 10 << endl;
cout << setw(10) << setfill('*') << 10 << endl;
//使用以下这种形式来调用显得更加整齐并简洁
int a=10;
int b=20;
cout.setf(ios::right,ios::adjustfield);
cout.fill('0');
cout << setw(5) << a <<endl;
cout << setw(5) << b << endl;
}
输出结果可以证实i奥数的正确性。
菜鸟教程的这边讲的易懂
C++ setw() 函数