簡體   English   中英

如何正確格式化此表?

[英]How do I properly format this table?

我正在嘗試正確設置表格的格式,以使其在每列下方打印出值,並從該列的第一個字符開始。 我已經成功格式化了三列,但是我無法弄清楚如何格式化K Count和LM Count列,以便它們以整潔的方式打印出來。

我可以對代碼的while循環部分進行哪些更正,以使K計數和LM計數列整齊地打印出來?

void printTable(const vector<int>& z, const vector<long>& x, const 
vector<long>& y,
const vector<int>& a, const vector<int>& b)
{
ostringstream ss;
ss << "\n\n\n" << setw(10) << left << "Digits" << "Input Numbers       "
    << setw(11) << right << "K Output   " << setw(6)
    << right << "K Count     " << setw(10) << right << "LM Output   " << setw(6)
    << right << "LM Count" << endl;


int i = 0, n = 0;
while (i < 5)
{
    string q = to_string(z[2*n]) + " x " + to_string(z[abs(2*n + 1)]);
    string r = to_string(x[i]);
    string s = to_string(a[i]);
    string t = to_string(y[i]);
    string u = to_string(b[i]);

    ss << setw(10) << left << (i+1) <<  q
        << setw(16) << right << r
        << setw(11) << right << s
        << setw(12) << right << t
        << setw(10) << right << u << endl;

    i++;
    n++;
}

string r = ss.str();
cout << r;
}

在此處輸入圖片說明

您正在打印以下內容:
-剩余的數字對齊超過10個字符
-直接輸入數字,不指定寬度
-K輸出右對齊超過16個字符
您也應該指定輸入數字的寬度。
嘗試這個:

ss << setw(10) << left  << (i+1) <<
      setw(16) << left  << q <<
      setw(10) << right << s <<
      setw(12) << right << t <<
...

每列的確切寬度可能不正確。 自己嘗試一下。

要固定K計數輸出,應在設置上一個結果的寬度后將光標重置為左對齊,然后再右移。 這樣的事情應該做你想要的。

ss << setw(10) << left  << (i+1) << right
    setw(16) << left << q << right <<
    setw(11) << left << r << right <<
    setw(12) << left << s << right <<
    setw(12) << left << t << right <<
    setw(10) << left << u << right << endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM