假设有一个名为machine的结构数组,其中包含元素drink,price。
for(int i = 0; i < 10; i++)
{
cout << i+1 << ". " << machine[i].drink;
cout << setw(20) << machine[i].price << "\n";
}
这不像我通常期望的setw工作方式那样工作,而且它的格式化方式与\ t(将不会创建列而是不均匀的间距)非常相似。
这里有任何帮助吗?
答案 0 :(得分:0)
您正在设置错误输出的宽度。
如上所述,setw(20)
在machine[i].drink;
输出后开始。因此,如果您要为Coke
打印$1.00
,您会看到Coke
后跟空格的15个填充字符,然后$1.00
作为{{的最后5个字符1}}。但是,如果您想为setw(20)
打印Mountain Dew
,则会再次看到$1.00
后跟相同的15个填充字符,然后是Mountain Dew
。
您需要的是要添加到$1.00
输出末尾的填充字符,但目前您将它们放在machine[i].drink
输出的开头。
你应该在第一个输出上使用machine[i].price
并左对齐它。然后在没有setw()
或理由的情况下输出价格。
例如:
setw()