C++在默認(rèn)輸出時,由于前個輸出的長度不是固定的,所以會出現(xiàn)輸出不對齊的情況。這種情況下有兩種方法可以解決
設(shè)置輸出的寬度cout.width(int w)
cout.width()返回當(dāng)前的字段寬度,默認(rèn)為0
如果當(dāng)前的寬度大于0,則默認(rèn)以右對齊的方式顯示輸出,但僅對下面一條cout語句起作用,而且寬度是從0
cout<<"默認(rèn)寬度大小為:"<<cout.width()<<endl;
//cout.setf(std::ios::left);//注釋后為左對齊,默認(rèn)為右對齊
for (long i = 1; i <= 100; ) {
cout.width(5);//cout.width(5);表示第5位開始下面的輸出右對齊
cout << i << ':';
cout.width(8);//表示在上一個輸出位置后8位開始右對齊
i *= 10;
cout <<i << "\n";
}

上面的用法默認(rèn)是右對齊,可以指明左對齊,用法如下:
cout.setf(std::ios::left);
把這條指令放在需要左對齊的語句前即可,對于上面的代碼,取消注釋即可,結(jié)果如下:

參考https://www.cnblogs.com/hustxujinkang/p/4176191.html
setw(int w)控制寬度
setw(int w)的用法與第一種方法相似,不過這個函數(shù)是插入在cout輸出中的,不是單獨一行。
setw用法需包含iomanip頭文件
#include<iomanip>
將上面的代碼用這種方法表示的話 應(yīng)為:
for (long i = 1; i <= 100; ) {
cout << setw(5)<< i << ':';
i *= 10;
cout << setw(8)<< i << endl;
}

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