C++ left和right操作符用法詳解

2020-07-16 10:04:37
正如學習 fixed、setprecision 和 showpoint 時的程式碼範例所看到的,cout 的輸出是右對齊的,這意味著如果列印的欄位大於顯示的值,則值會被列印在欄位的最右側,帶有前導空格。

有時人們可能會希望強制一個值在其欄位的左側列印,而在右邊填充空格。為此可以使用 left 操作符。left 的左對齊設定將一直有效,直到使用 right 操作符將設定改回為右對齊。這些操作符可以用於任何型別的值,甚至包括字串。

下面的程式說明了 left 和 right 操作符的用法。它還說明了 fixed、setprecision 和 showpoint 操作符對整數沒有影響,只對浮點數有效。
// This program illustrates the use of the left and right manipulators.
#include <iostream>
#include <iomanip> // Header file needed to use stream manipulators
#include <string> // Header file needed to use string objects
using namespace std;

int main()
{
    string month1 = "January", month2 = "February", month3 = "March";
    int days1 = 31, days2 = 28, days3 = 31;
    double high1 = 22.6, high2 = 37.4, high3 = 53.9;
    cout << fixed << showpoint << setprecision(1);
    cout <<"Month       Days     Highn";
    cout << left << setw(12) << month1 << right << setw(4) << days1 << setw(9) << high1 << endl;
    cout << left << setw(12) << month1 << right << setw(4) << days1 << setw(9) << high1 << endl;
    cout << left << setw(12) << month1 << right << setw(4) << days1 << setw(9) << high1 << endl;
    return 0;
}
程式輸出結果:

Month       Days     High
January       31     22.6
January       31     22.6
January       31     22.6

表 1 對 setw、fixed、showpoint、setprecision、left 和 right 共 6 種操作符進行了總結:

表 1 輸出流操作符
流操作符 描 述
setw(n) 為下一個值的輸出設定最小列印欄位寬度為 n
fixed 以固定點(例如小數點)的形式顯示浮點數
showpoint 顯示浮點數的小數點和尾數 0,即使沒有小數部分也一樣
setprecision(n) 設定浮點數的精度
left 使後續輸出左對齊
right 使後續輸出右對齊