我希望输出格式右对齐。我的代码如下。
#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
根据文档,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;