如何将用户输入格式化为一个整齐的表格以便在C ++中输出

时间:2013-09-24 21:53:00

标签: c++

我在让这个表正确排列时遇到问题,这是我表中的一个cout语句。我的问题是如何在一行中格式化不同的东西,而不会弄乱行中的下一个条目。例如,当我使用setprecision(2)作为我的goldweight时,goldvalue搞砸了,给了我一个奇怪的数字,如5656e + 02

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

2 个答案:

答案 0 :(得分:0)

你需要为下一个输入重置它,就像你已经设置了一个精度,然后你把它设置回来(未设置)

    std::cout.unsetf ( std::ios::floatfield );

答案 1 :(得分: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变量而不是原始值。