C++-调整输出时出现故障
C++ - Trouble aligning output
我有一个函数,它遍历一些并行数组,并在循环控制变量处打印内容。我有另一个在整个程序中使用的名称,用于在循环控制变量的值处打印和ID
相关的名称。以下是的2个功能
void PrintName(int ID)
{
switch (ID)
{
case 0: cout << "computer(s)";
break;
case 1: cout << "pencil(s)";
break;
case 2: cout << "pen(s)";
break;
case 3: cout << "book(s)";
break;
case 4: cout << "beer(s)";
break;
case 5: cout << "ruler(s)";
break;
case 6: cout << "stereo(s)";
break;
case 7: cout << "refrigerator(s)";
break;
case 8: cout << "desk(s)";
break;
case 9: cout << "backpack(s)";
break;
}
}
void PrintSummary(InvIDList invIDs, ItemQuantity itemQuant, int totalWeight, int totalPurch, int budget)
{
cout << "ID NAME QUANTITY" <<endl;
cout << "--------------------------" <<endl;
for(int i = 0; i < 10; i++){
cout << invIDs[i];
PrintName(i);
cout << itemQuant[i] <<endl;
}
cout << "nnTotal Amount Spent: $" << totalPurch <<endl;
cout << "Amount of Budget Remaining: $" << budget <<endl;
cout << "Total Weight of Items Purchased: " << totalWeight <<endl;
}
我希望输出在ID
、NAME
和QUANTITY
下很好地对齐,ID
在最左边,QUANTITY
在最右边,NAME
居中。不幸的是,在对代码进行了数小时的修改之后,我不知道如何实现这一点,主要是让QUANTITY
一直向右对齐。
您希望返回一个字符串对象来与std::cout一起使用,而不是使用PrintName函数。为了正确对齐列,您可能需要查看<iomanip>
标头,尤其是std::setw(n)操纵器。
这里有一个例子,请注意,当我将列宽设置为16个字符时,您应该计算每个类别的最大字符数,并相应地更改宽度。这样做的好处在于,您可以为每列指定不同的宽度。
string ReturnName(int ID)
{
switch (ID)
{
case 0: return "computer(s)";
break;
case 1: return "pencil(s)";
break;
case 2: return "pen(s)";
break;
case 3: return "book(s)";
break;
case 4: return "beer(s)";
break;
case 5: return "ruler(s)";
break;
case 6: return "stereo(s)";
break;
case 7: return "refrigerator(s)";
break;
case 8: return "desk(s)";
break;
case 9: return "backpack(s)";
break;
}
}
void PrintSummary(InvIDList invIDs, ItemQuantity itemQuant, int totalWeight, int totalPurch, int budget)
{
cout << left << setw(16) << "ID";
cout << left << setw(16) << "NAME";
cout << left << setw(16) << "QUANTITY" << endl;
cout << "--------------------------------------" << endl;
for(int i = 0; i < 10; i++){
cout << left << setw(16) << invIDs[i];
cout << left << setw(16) << ReturnName(i);
cout << left << setw(16) << itemQuant[i] << endl;
}
cout << "nnTotal Amount Spent: $" << totalPurch <<endl;
cout << "Amount of Budget Remaining: $" << budget <<endl;
cout << "Total Weight of Items Purchased: " << totalWeight <<endl;
}
不要在PrintName
中打印名称,而只是将名称作为字符串返回。然后,在循环中,您可以获得正确对齐列所需的所有信息。
哦,你可能想更改PrintName
的名称。
U已将标题打印为
cout << "ID NAME QUANTITY" <<endl;
U假设上面给出的空间,但你永远不知道有多少空间
invIDs[i]
和
PrintName(i);
这样你就可以计算出每一个的最大长度。例如,知道开关输出的最大长度等。然后修改标题打印语句,包括这么多空格。
相关文章:
- 分段故障(堆芯转储)矢量
- 为char数组调整zlib-zpipe
- C++中的动态铸造故障
- 数组的指针从不分段故障
- 调整大小后指向元素值的指针unordered_map有效?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- 在C++中调整向量中的索引
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 哪些库可以通过Opencv调整曝光率
- 调试 CUDA MMU 故障
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- C++-调整输出时出现故障