【问题标题】:How to format output or display?如何格式化输出或显示?
【发布时间】:2014-03-15 10:08:57
【问题描述】:
void listUser(student user[], int size, int const track)
{
    int list;
    cout<< "\n\tName|||Age|||Gender|||Course|||Year|||Section|||Student No.\n";
    for (list=0; list<track; list++)
    {
        cout<< "\n\n" << user[list].firstname <<" " << user[list].lastname <<"\t\t" << user[list].age <<"\t" << user[list].gender << "\t" << user[list].course << "\t" << user[list].year << "\t" << user[list].section << "    " << user[list].studno <<"\n";
    }
    return;
}

所以,这是我的代码的一部分,它在命令行窗口上显示用户列表。我的问题是,如何在不使用制表符的情况下格式化输出/显示?

当列表中的用户具有长名称或短名称时,它看起来很难看并且有些不美观。谢谢。

【问题讨论】:

  • 检查std::setw() io 操纵器。 std::setfill()也可能有用。

标签: c++ format output


【解决方案1】:

这是一个简单的方法:迭代集合两次。首先找出每列中最长字符串的大小,然后实际打印值。

伪代码:

size_longest_first_name = 0
size_longest_last_name = 0

for each student
{
    if (student.first_name.size > size_longest_first_name)
        size_longest_first_name = student.first_name.size

    if (student.last_name.size > size_longest_last_name)
        size_longest_last_name = student.last_name.size
}

for each student
{
    padding_spaces = size_longest_first_name - student.first_name.size() - 
    print student.first_name + string(padding_spaces)

    padding_spaces = size_longest_last_name - student.last_name.size() - 
    print student.last_name + string(padding_spaces)
}

编辑:

哦,不要使用数组!这是在 C++ 程序中完全不合适的低级 C 风格编码。使用std::vector

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多