C++ C++;如何对齐多个输出?
我有一个问题需要解决,我需要在哪里以这种格式显示输出: 但我面临的问题是,对于有两个书名的C++ C++;如何对齐多个输出?,c++,C++,我有一个问题需要解决,我需要在哪里以这种格式显示输出: 但我面临的问题是,对于有两个书名的Purchase ID:2,第二个书名(Midnight Library)显示在第二行,并且没有正确对齐,我如何在书名下对齐它 代码: void viewPurchase()//查看所有采购交易记录 { 系统(“cls”); 结构purchaseInfo*viewPurchase; viewPurchase=头; 智力选择; 库特 但是第二个书名(午夜图书馆)跑掉了,没有正确对齐,我怎么能在书名下对齐它呢
Purchase ID:2
,第二个书名(Midnight Library)显示在第二行,并且没有正确对齐,我如何在书名下对齐它
代码:
void viewPurchase()//查看所有采购交易记录
{
系统(“cls”);
结构purchaseInfo*viewPurchase;
viewPurchase=头;
智力选择;
库特
但是第二个书名(午夜图书馆)跑掉了,没有正确对齐,我怎么能在书名下对齐它呢
在插入书名之前,使用与第一列宽度匹配的setw
插入空字符串。您的代码未编译,请添加缺少的部分。问题是您只在循环之前写入一次购买ID。如果您希望后续循环迭代正确显示,则如果loop
不可用ro您需要弥补该列中缺少的空格。例如,您可以执行类似于cout的操作。我建议您避免对列宽使用硬编码值。相反,为每个列宽声明一些常量。请注意,这些可能与标题不对齐,因为这是使用制表符(尽管通常为8个字符,但其宽度倾向于开放以供解释)。您可以用相同的方式编写标题:cout在c++20中可以使用std::format@paddy非常感谢你的帮助!!我已经解决了我的问题!!非常感谢你的帮助!!我已经解决了我的问题!!
void viewPurchase() //View all purchase transactions
{
system("cls");
struct purchaseInfo* viewPurchase;
viewPurchase = head;
int choice;
cout << "*************" << endl;
cout << "VIEW PURCHASE" << endl;
cout << "*************" << endl;
cout << "1. View Purchase" << endl;
cout << " " << endl;
cout << "0. BACK TO MENU" << endl;
cout << "\nEnter your choice: ";
cin >> choice;
switch (choice)
{
case 1:
{
if (viewPurchase == NULL) {
cout << "No record in the list\n";
cout << "\nPress ENTER to Back to Menu...\n" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
}
while (viewPurchase != NULL) {
cout << "============================================================================\n";
cout << "Purchase ID \tBook Title \t\t Total Item \tTotal Price\n";
cout << "============================================================================\n";
while (viewPurchase != NULL) {
cout << left << setw(16) << viewPurchase->purchaseID;
for (int loop = 0; loop < viewPurchase->size; loop++) {
cout << left << setw(30) << viewPurchase->book[loop].bookTitle;
if (loop == 0) {
cout << left << setw(18) << viewPurchase->totalItem;
cout << left << setw(16) << viewPurchase->totalPrice;
}
cout << endl;
}
viewPurchase = viewPurchase->next;
}
}
break;
}
case 0:
break;
default:
cout << "\nInvalid selection. Press ENTER to continue...\n" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
break;
}
};