我如何输出整洁的列?

问题描述 投票:0回答:1

我希望输出格式右对齐。我的代码如下。

 #include <iostream>
#include <iomanip>
#include <string>
using namespace std;
struct Planet
{
    string name;
    double volume;
};
int main(int argc, const char * argv[]) {
    // insert code here...
    Planet planets[3]={{"太阳",22.1e20},{"地球",4.2e7},{"海王星",5.3e10}};
    for (int i=0; i<3; i++)
    {
        cout<<right<<"\t"<<planets[i].name<<setw(12)<<planets[i].volume<<endl;
    }
    return 0;
}

当我运行此代码时。输出在下面的此链接中,但这不是我想要的。因为输出列不能右对齐。enter image description here

c++ output
1个回答
0
投票

根据文档,std::right从右侧填充流,std::w用于设置流的宽度参数。在您的情况下,std::right << std::setw(12)必须落在您要格式化的内容之前。因此解决方案是:

   cout << right << setw(12) << " 太阳系" << right << setw(12) << 12.33322023 << endl << right << setw(12) << " 星系" << right << setw(12) << 32.2323324402 << endl;
© www.soinside.com 2019 - 2024. All rights reserved.