微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以垂直列表/或 C++ 中的文本的形式对齐文本

如何解决以垂直列表/或 C++ 中的文本的形式对齐文本

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

enter image description here

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

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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。