C++中水平制表符显示问题,for循环中开始时制表符没有对齐,在第三次循环后正常显示怎么回事

oid PringInfo(Stu stud[], int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << "学号:" << stud[i].no<<"\t"<< "姓名:" << stud[i].name << "\t"<<"性别:" << stud[i].sex<<"\t" << "班号:" << stud[i].classNum << endl;
        
    }
}

你用的TAB吧,用TAB效果不行,第三行由于学号变成两位数,TAB就多跳了一格啦

用如下的setw函数,为你每个输出项设定宽度就可以了。

cout<<setw(12)<<a<<setw(12)<<b<<endl;

供参考:

#include <iomanip>

oid PringInfo(Stu stud[], int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << "学号:"<<setw(12)<<setiosflags(ios::left)<<stud[i].no<<"\t"<< "姓名:"<<setw(10)
             <<setiosflags(ios::left)<<stud[i].name << "\t"<<"性别:"<<setw(4)<<setiosflags(ios::left)
             <<stud[i].sex<<"\t"<< "班号:"<<setw(8)<<setiosflags(ios::left)<<stud[i].classNum <<endl;
    }
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632