繁体   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