[英]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.