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;
}
因此,这是我的代码的一部分,它在命令行窗口中显示用户列表。我的问题是,如何在不使用制表器的情况下格式化输出/显示?
当列表中的用户具有长名称或短名称时,它看起来很丑陋并且有些不可思议。感谢。
答案 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
。