【问题标题】:Aligning text in the form of vertical list/or a text in C++以垂直列表/或 C++ 中的文本的形式对齐文本
【发布时间】:2021-07-08 09:14:38
【问题描述】:

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

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

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

【问题讨论】:

  • 无关:有更简单的方法来初始化您的产品列表。 example
  • 你打算用\t-characters 做什么?不是setw负责打印填充字符吗?
  • 最后两个代码 sn-ps 很难阅读,你应该更好地格式化它并学习如何将长行拆分为多个语句。这将增加任何人愿意查看您的代码的机会。

标签: c++ iomanip setw


【解决方案1】:

默认情况下,当设置setw 时,&lt;&lt; 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;
}

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2014-04-13
    相关资源
    最近更新 更多