c++数组和string对于字符处理的比较
2014-06-09 09:28
134 查看
我们在设计程序时,经常会出现要求输入一段字符串,大部分的人可能都会使用数组来储存一段字符串。然而由于我们在设计的时候无法估计到底需要输入的字符串的长度是多长,因此我们通常都会将数组空间扩大,防止数据长度超出原定数组长度。但是这样会浪费了很多的内存空间,或许可能又有人提出可以用字符指针来达到赋值的效果,的确可以定义一个字符指针指向字符串的地址,从而达到赋值的效果。但问题是使用字符指针只能在初始化时完成赋值,一旦定义后就很难作出修改。
#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就能够很好的解决以上两个存在的缺点.
#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就能够很好的解决以上两个存在的缺点.
相关文章推荐
- mysql4.1对于不可识别的中文字符入库的处理 [Parse error the tag 6 field' is incorrect !]
- JAVA面试题之String处理--一字符取出重复的字符以及其个数
- C++的string逐位处理效率比较
- android String 特殊字符处理
- 标准库容器 vector中 string的字符处理。
- 提供一个比较不错的字符处理类,希望大家把自己的也分享
- Lua学习——string字符处理
- perl 中对于GBK编码的字符的处理方法
- Ibatis查询条件对于特殊字符的处理方法
- jni中字符转换中文乱码的处理方法 Java String转换成const char*(转摘)
- 精通Flex 3.0――4.3.2 String的字符处理
- C++中处理string对象的字符
- C# 3.0 Cookbook:一、字符与字符串处理(5):把一个字符串与另一个字符串的头部或尾部作比较
- string 对象中字符的处理
- C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)
- string对象中字符的处理
- C# 3.0 Cookbook:一、字符与字符串处理(4):在比较两个字符串时控制大小写敏感性
- C里面的scanf对于空白字符的处理
- C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)
- C里面的scanf对于空白字符的处理