以垂直形式对齐文本 list/or a text in C++

Aligning text in the form of vertical list/or a text in C++

我希望以下输出以 table 的形式正确对齐:

我的尝试: 我创建了一个 class 成员函数(显示商店中可用产品的函数)和成员变量。然后在主函数中我初始化了所有成员变量并将控制权传递给用户定义的函数以提供输出。 我提供了一些代码片段来支持我的想法。

class product
{
    public:
        //Characteristics of products
        string batchid;
        string dateofmanu; //dd-mm-yy format
        string name;
        float rate;
        int quantity;
        //User-defined functions
        void add_products();
        void mod_products();
        void del_products();
        void display_productdetails();    
};

正在主函数中初始化:

int main()
{
    //Initially we have 5 products
    p[0].batchid = "Bc11256";
    p[0].dateofmanu = "08-01-2021";
    p[0].name = "Parle-G";
    p[0].rate = 25;
    p[0].quantity = 100;
    p[1].batchid = "Ad12506";
    p[1].dateofmanu = "16-01-2021";
    p[1].name = "Sun-Flakes";
    p[1].rate = 58;
    p[1].quantity = 25;
    p[2].batchid = "Af10325";
    p[2].dateofmanu = "25-01-2021";
    p[2].name = "Lays-Blue(PartyPack)";
    p[2].rate = 40;
    p[2].quantity = 100;
    p[3].batchid = "Yk63785";
    p[3].dateofmanu = "12-02-2021";
    p[3].name = "Denim T-shirt(M)";
    p[3].rate = 500;
    p[3].quantity = 50;
    p[4].batchid = "Bc11256";
    p[4].dateofmanu = "08-01-2021";
    p[4].name = "Parle-G";
    p[4].rate = 25;
    p[4].quantity = 100;
    p[4].batchid = "Hj16254";
    p[4].dateofmanu = "19-02-2021";
    p[4].name = "Tupperware WaterBottle(500ml)";
    p[4].rate = 125;
    p[4].quantity = 15;
}

然后将控制传递给所需的用户定义成员函数:

cout<<"The products available in the store are:\n";
                    cout<<setw(15)<<"\t\tProduct Name"<<setw(30)<<"BatchID"<<setw(30)<<"DateOfManufacturing"<<setw(15)<<"Rate"<<setw(10)<<endl;
                    for(i=0;i<5;i++)
                    p[i].display_productdetails();

向用户显示内容的用户定义函数:

void product::display_productdetails()
{
    cout<<setw(15)<<"\t"<<this->name<<setw(30)<<this->batchid<<setw(30)<<this->dateofmanu<<setw(30) 
    <<this->rate<<endl;
}

默认设置setw时,<< operator使用右对齐。

通过打印 TAB 字符,右对齐被打破,行的其余部分被移动。

尽量避免\tsetw结合使用,开头设置对齐方式为left

void product::display_productdetails()
{
    cout << left;
    cout << setw(15) << name;
    cout << setw(30) << batchid;
    cout << setw(30) << dateofmanu;
    cout << setw(30) << rate;
    cout << endl;
}