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*)'
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;
}
我改用数组倒是可以
string和char *是不同的类型,所以不能直接对其进行赋值或拷贝操作;
string是一个封装的容器,string的内部实现是采用的char *来实现的,
解决办法1:
将类的数据成员num改为string num,然后构造函数中不采用strcpy方式,直接用:
num = Num;
解决办法2:
也就是楼主后面所说的把Num改为char Num[]的形式,因为这是两者都为char *类型,因为类型是相同的;
所以编译不会报错;
Num.c_str(); 用这个。好好看下string 类吧