c++string函数及表示
答案:1 悬赏:20 手机版
解决时间 2021-01-31 15:51
- 提问者网友:孤凫
- 2021-01-31 12:02
c++string函数及表示
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-01-31 13:12
string 不是个函数,而是一个类,被定义在头文件#include<string>中,
它想当于是对c函数库#include<cstring>的扩展,可以对字符串进行相加,
比较等,是通过函数的重载,实现的。
#include<iostream>
#include<cstring>
using namespace std;
class String
{
public:
String(); //显示默认构造函数,实现string s 的形式
String(char *p); //构造函数,实现string s="salj"的形式的初始化
String(const String &s); //拷贝构造函数,实现String s1=s2;
String& operator=(String &s2); //重载=,实现s1=s2;
int size() { return length; } //实现string 函数s.size();
~String() //析构函数,释放动态分配的elem
{ delete []elem; }
friend ostream & operator<<(ostream& os,String &s) //友元重载<<操作符,输出cout<<s;
{
os<<s.elem<<endl;
return os;
}
friend istream & operator>>(istream & is,String & s) //友元重载>>,cin>>s;
{
is>>s.elem;
return is;
}
private:
char *elem; //数据
int length; //长度
};
String::String()
{
elem=new char[1];
*elem='\0';
length=0;
}
String::String(char *p)
{
length=strlen(p);
elem=new char[length+1];
strcpy(elem,p);
}
String::String(const String &s)
{
length=s.length;
elem=new char[length+1];
strcpy(elem,s.elem);
}
String& String::operator=(String &s2)
{
if(this==&s2) return *this;
else
{
delete []elem;
length=s2.length;
elem=new char[length+1];
strcpy(elem,s2.elem);
return *this;
}
}
int main()
{
String s1="d3ljal";
String s2=s1;
cout<<s2;
return 0;
}
其他的一些同理的重载>,<,等就不列出来了,
它实现了s=s1+s2等
它想当于是对c函数库#include<cstring>的扩展,可以对字符串进行相加,
比较等,是通过函数的重载,实现的。
#include<iostream>
#include<cstring>
using namespace std;
class String
{
public:
String(); //显示默认构造函数,实现string s 的形式
String(char *p); //构造函数,实现string s="salj"的形式的初始化
String(const String &s); //拷贝构造函数,实现String s1=s2;
String& operator=(String &s2); //重载=,实现s1=s2;
int size() { return length; } //实现string 函数s.size();
~String() //析构函数,释放动态分配的elem
{ delete []elem; }
friend ostream & operator<<(ostream& os,String &s) //友元重载<<操作符,输出cout<<s;
{
os<<s.elem<<endl;
return os;
}
friend istream & operator>>(istream & is,String & s) //友元重载>>,cin>>s;
{
is>>s.elem;
return is;
}
private:
char *elem; //数据
int length; //长度
};
String::String()
{
elem=new char[1];
*elem='\0';
length=0;
}
String::String(char *p)
{
length=strlen(p);
elem=new char[length+1];
strcpy(elem,p);
}
String::String(const String &s)
{
length=s.length;
elem=new char[length+1];
strcpy(elem,s.elem);
}
String& String::operator=(String &s2)
{
if(this==&s2) return *this;
else
{
delete []elem;
length=s2.length;
elem=new char[length+1];
strcpy(elem,s2.elem);
return *this;
}
}
int main()
{
String s1="d3ljal";
String s2=s1;
cout<<s2;
return 0;
}
其他的一些同理的重载>,<,等就不列出来了,
它实现了s=s1+s2等
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯