当我将程序结果打印到屏幕上时,数据到处都是,但我希望尽可能对齐结果。我正在使用setw(10)来执行此操作,但如果有人帮助我,它无法正常工作吗?
由于
这是输出的样子:
这是我的打印功能:
void Print(const call_record *call_DB, int & count)
{
cout << fixed << showpoint << setprecision(2);
for(int i= 0; i <= count; i++)
{
cout << call_DB[i].firstname <<" " << call_DB[i].lastname <<" " << call_DB[i].cell_number <<setw(15) << call_DB[i].relays <<setw(10) << call_DB[i].call_length;
cout <<setw(10) << call_DB[i].net_cost <<setw(10) << call_DB[i].call_rate << setw(10) << call_DB[i].call_tax <<setw(10) << call_DB[i].total_cost;
cout << endl;
}
}
答案 0 :(得分:1)
当然,您还必须设置字符串(或组合名称)输出的宽度:
cout << std::setw(20) << (call_DB[i].firstname + call_DB[i].lastname);
(假设这些是std::string
,以便+
连接它们。)
答案 1 :(得分:1)
我在C ++输出上已知的最佳实践之一是使用模板函数。
示例:
您的模板功能:
template<typename T> void coutElement(T t, const int& width)
{
cout << std::left << setw(width) << setfill(separator) << t;
}
使用它:
const int name_width = 10; //non sense value
const int num_width = 10; //non sense value
coutElement("Dainer", name_width);
coutElement("Doe", name_width);
coutElement(250, num_width);
这一直是完美无缺的,唯一有挑战性的事情就是你要对name_width
和num_width