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

How can I format user input into a neat table for output in C++

本文关键字:表格 输出 C++ 用户 输入 格式化      更新时间:2023-10-16

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

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

是的,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变量而不是原始值。

您需要

为下一个输入重置它,就像如果您已经设置了精度,然后将其设置回来(未设置)

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