[英]Using setw is failing inside of a for loop
假設有一個稱為機器的結構數組,其元素為飲料,價格。
for(int i = 0; i < 10; i++)
{
cout << i+1 << ". " << machine[i].drink;
cout << setw(20) << machine[i].price << "\n";
}
這不像我通常期望setw那樣工作,並且格式化空間的方式與\\ t差不多(不是創建列,而是間隔不均勻)。
這里有什么幫助嗎?
您正在為錯誤的輸出設置寬度。
如所寫,您的setw(20)
在machine[i].drink;
之后啟動machine[i].drink;
輸出。 因此,如果您要以$1.00
的$1.00
打印Coke
,則會看到Coke
后跟15個填充字符,然后是$1.00
作為setw(20)
的最后5個字符。 但是,如果您想以$1.00
的$1.00
打印Mountain Dew
,則會再次看到Mountain Dew
后跟相同的15個填充字符,然后是$1.00
。
您需要的是將填充字符附加到machine[i].drink
輸出的machine[i].drink
,但是當前您將它們放在machine[i].price
輸出的開頭。
您應該在第一個輸出上使用setw()
並使其對齊。 然后輸出沒有setw()
或理由的價格。
例如:
cout << setw(20) << left << i+1 << ". " << machine[i].drink;
cout << machine[i].price << "\n";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.