为一个对象的string类型成员变量赋值一个字母字符串后输出为什么为变成一个字符


#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;
class Student
{
    public:
        Student(string x="00000",string y="wang",int z=0):number(x),name(y),grade(z){}
        void input(string m,string n,int q){
            number=m;name=q;grade=q;}
        void output(){
            cout<<this->name<<' '<<this->number<<' '<<this->grade<<endl;
    } 
    private:
        string number;
        string name;
        int grade;     
};
int main()
{
    Student stu;
        string a;string b;int c;
        cin>>a;cin>>b;cin>>c;
        stu.input(a,b,c);
        stu.output();
    return 0;
}

img
如图字符串00001未发生改变但“zhangsan”变成了小于号

你代码里name属性不等于n而是等于int类型的变量q,q=60,ASCII表中60对应的就是小于号