1

我在让这张桌子正确排列时遇到问题,这是我桌子上的一条 cout 语句。我的问题是如何在一行中格式化不同的内容,而不会弄乱该行中的下一个条目。例如,当我将 setprecision(2) 用于我的黄金权重时,黄金价值会变得混乱并给我一个奇怪的数字,例如 5656e+02

 cout << "                   Value Analysis" <<endl;
cout << "Gold: " << setw(6) <<  "" <<goldweight<< "  Oz @ "<<costgold<<"
("<<setw(1)<<    ""<<carats<<"         Carats) $"<<goldvalue<<endl;
4

2 回答 2

0

您需要为下一个输入重置它,例如如果您已经设置了精度,那么您将其设置回来(未设置)

    std::cout.unsetf ( std::ios::floatfield );
于 2013-09-24T21:59:57.497 回答
0

是的setw(),,,setprecision()等会搞砸的东西。你可以做的是使用临时std::ostringstream的。

#include <sstream>
...
std::ostringstream oss_goldweight ;
std::ostringstream oss_goldvalue ;
std::ostringstream oss_goldcarats ;

oss_goldweight << setw(6) << goldweight ;
oss_goldvalue << setprecision(2) << goldvalue ;
oss_goldcarats << setw(1) << carats ;

然后使用 oss_goldxyz 变量而不是原始值。

于 2013-09-24T22:04:11.717 回答