如何格式化输出或显示?

时间:2014-03-15 10:08:57

标签: c++ format output

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;
}

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

当列表中的用户具有长名称或短名称时,它看起来很丑陋并且有些不可思议。感谢。

1 个答案:

答案 0 :(得分:0)

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

的伪代码:

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