一个c++字符串问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 14:28:34
这是我写的代码,实现键盘输入姓名,年龄,再打印出来,编译的时候会被关闭,不知道什么原因。请高手帮忙,没分了。先谢了。
#include <iostream>
#include <string>
using namespace std;
class student{
private:
char Name[20];
char Age[20];
public:
student(char name[]=zzzzzzzz,char age[]=11111111){
strcpy_s(Name,name);
strcpy_s(Age,age);
}
void input();
void display();
};
void student::input(){
cout<<"请输入姓名"<<endl;
cin.getline(Name,20);
cout<<"请输入出生日期"<<endl;
cin.getline(Age,20);

}
void student::display(){
cout<<"姓名"<<Name[20]<<endl;
cout<<"年龄"<<Age[20]<<endl;
}
void main(){

student st1;
st1.input();
st1.display();

}

student(char name[]="zzzzzzzz",char age[]="11111111"){
strcpy(Name,name);
strcpy(Age,age);

没有处理输入可能产生的异常

问题还是比较多的……
你在private里声明的“char[] Name”,Name只是个char指针,也就是char*类型,并没有实际的存储字符串的空间。你可以在student类的构造函数里加上“Name = new char...”之类的语句给Name申请空间,然后在析构函数里Delete掉Name申请的空间。
既然是C++,Name可以用string类型。