【问题标题】:Output aligned columns输出对齐的列
【发布时间】:2013-03-28 04:05:31
【问题描述】:

我正在学习 C++。我在格式化程序的输出时遇到问题。我想在那里打印完全对齐的列,但到目前为止我做不到,这是我的代码:

int main()
{
    employee employees[5];

    employees[0].setEmployee("Stone", 35.75, 053);
    employees[1].setEmployee("Rubble", 12, 163);
    employees[2].setEmployee("Flintstone", 15.75, 97);
    employees[3].setEmployee("Pebble", 10.25, 104);
    employees[4].setEmployee("Rockwall", 22.75, 15);

    printEmployees(employees, 5);

    return 0;
}

// print the employees in my array
void printEmployees(employee employees[], int number)
{
    int i;

    for (i=0; i<number; i++) {
        employees[i].printEmployee();// this is the method that give me problems
    }
    cout << "\n";
}

在员工类中我有打印员工方法:

void printEmployee() const
{
    cout << fixed;
    cout << surname << setw(10) << empNumber << "\t" << setw(4) << hourlyRate << "\n";
}

问题是当我打印“flinstones”行时,emp 编号和费率没有对齐。会发生这样的事情:

斯通 43 35.750000 碎石 163 12.000000 燧石 97 15.750000 鹅卵石 104 10.250000 罗克沃尔 15 22.750000

有人可以帮我吗? (我尝试添加标签。但没有帮助)

【问题讨论】:

标签: c++ cout


【解决方案1】:

在 print employee 方法的类 employee 中: 使用此行打印。

cout << setw(20) << left << surname << setw(10) << left << empNumber << setw(4) << hourlyRate << endl;

您忘记添加“&lt;&lt; left”。如果您想左对齐,这是必需的。

希望对你有用。

【讨论】:

  • 是的,我想这是我遗漏的左边的东西。感谢您的帮助!
【解决方案2】:

您需要在之前设置一个宽度,然后打印出名称以让其他东西在此之后对齐。这个一般顺序的东西:

cout << left << setw(15) << surname 
     << setw(10) << empNumber << "\t" 
     << setw(4) << hourlyRate << "\n";

我会(至少通常情况下)避免尝试将固定宽度字段与选项卡混合使用。通常只使用宽度来对齐更容易。

【讨论】:

    【解决方案3】:

    C++ 支持许多可用于 格式化输出。这些功能包括:

    1. ios 类函数和标志
    2. 机械手

    使用ios类函数,我们可以使用ios类的width()方法,像这样:

    或者我们可以使用操纵器来格式化输出。要打印上述输出,我们可以使用:

    cout << right << setw(5) << 543 << right << setw(5) << 12 << endl;
    

    它将为第一个参数分配 5 个字符宽度(这里是 543)并通过在右侧填充它来格式化它。同样,它会为第二个参数分配一个 5 个字符的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多