我们在设计程序时,经常会出现要求输入一段字符串,大部分的人可能都会使用数组来储存一段字符串。然而由于我们在设计的时候无法估计到底需要输入的字符串的长度是多长,因此我们通常都会将数组空间扩大,防止数据长度超出原定数组长度。但是这样会浪费了很多的内存空间,或许可能又有人提出可以用字符指针来达到赋值的效果,的确可以定义一个字符指针指向字符串的地址,从而达到赋值的效果。但问题是使用字符指针只能在初始化时完成赋值,一旦定义后就很难作出修改。
#include<iostream>
using namespace std;
class person
{
char name[20];
public:
person(char Name[]=""){strcpy(name,Name);}
void modify()
{
char name1[20];
cout<<"输入姓名:"<<endl;
cin>>name1;
strcpy(name,name1);
}
void display(){cout<<name<<endl;}
};
void main()
{
person p1("王五");
p1.modify ();
p1.display();
}
利用字符数组能够对其值就行修改,但是会占用额外的内存
#include<iostream>
using namespace std;
class person
{
char *name;
public:
person(char *Name=""){name=Name;}
void display(){cout<<name<<endl;}
};
void main()
{
person p1("王五");
p1.display();
}
虽然会不会占用额外的内存空间,但是赋值也只能是开始之时。
#include<iostream>
#include<string>
using namespace std;
class person
{
string name;
public:
person(string Name=""){name=Name;}
void modify()
{
string temp;
cout<<"输入姓名"<<endl;
cin>>temp;
name=temp;
}
void display(){cout<<name<<endl;}
};
void main()
{
person p1("王五");
p1.display();
p1.modify();
p1.display();
}
使用string就能够很好的解决以上两个存在的缺点.