簡體   English   中英

使用setw在for循環內失敗

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

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