C++都是string 如何将其中一个string 赋值给另外一个? 1C

class Stu{
public:
Stu()
{
name[20] = {0};
addr[100] = {0};
num = "\0";
score = 0.0;
sex = 'f';
}
Stu(char Name[], char Addr[], string Num, double Score, char Sex)
{
strcpy(name, Name);
strcpy(addr, Addr);
strcpy(num, Num); //这里提示我错误,但是我不知道除了这个还能写什么?
score = Score;
sex = Sex;
}
}
//错误是这样的: [Error] cannot convert 'std::string {aka std::basic_string}' to 'char*' for argument '1' to 'char* strcpy(char*, const char*)'

3个回答

string和char *是不同的类型,所以不能直接对其进行赋值或拷贝操作;
string是一个封装的容器,string的内部实现是采用的char *来实现的,

解决办法1:

 将类的数据成员num改为string num,然后构造函数中不采用strcpy方式,直接用:
 num = Num;

解决办法2:
也就是楼主后面所说的把Num改为char Num[]的形式,因为这是两者都为char *类型,因为类型是相同的;
所以编译不会报错;

Num.c_str(); 用这个。好好看下string 类吧

class Stu{
public:
Stu()
{
name[20] = {0};
addr[100] = {0};
num[10] = {0}
score = 0.0;
sex = 'f';
}
Stu(char Name[], char Addr[], char Num[], double Score, char Sex)
{
strcpy(name, Name);
strcpy(addr, Addr);
strcpy(num, Num);
score = Score;
sex = Sex;
}

    我改用数组倒是可以
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐