C++在默认输出时,由于前个输出的长度不是固定的,所以会出现输出不对齐的情况。这种情况下有两种方法可以解决
设置输出的宽度cout.width(int w)
cout.width()返回当前的字段宽度,默认为0
如果当前的宽度大于0,则默认以右对齐的方式显示输出,但仅对下面一条cout语句起作用,而且宽度是从0
cout<<"默认宽度大小为:"<<cout.width()<<endl;
//cout.setf(std::ios::left);//注释后为左对齐,默认为右对齐
for (long i = 1; i <= 100; ) {
cout.width(5);//cout.width(5);表示第5位开始下面的输出右对齐
cout << i << ':';
cout.width(8);//表示在上一个输出位置后8位开始右对齐
i *= 10;
cout <<i << "\n";
}

上面的用法默认是右对齐,可以指明左对齐,用法如下:
cout.setf(std::ios::left);
把这条指令放在需要左对齐的语句前即可,对于上面的代码,取消注释即可,结果如下:

参考https://www.cnblogs.com/hustxujinkang/p/4176191.html
setw(int w)控制宽度
setw(int w)的用法与第一种方法相似,不过这个函数是插入在cout输出中的,不是单独一行。
setw用法需包含iomanip头文件
#include<iomanip>
将上面的代码用这种方法表示的话 应为:
for (long i = 1; i <= 100; ) {
cout << setw(5)<< i << ':';
i *= 10;
cout << setw(8)<< i << endl;
}

setw的默认对齐方式也是右对齐,在cout中加入std::left方法指明左对齐
for (long i = 1; i <= 100; ) {
cout << left << setw(5)<< i << ':';
i *= 10;
cout << left << setw(8)<< i << endl;
}
