#ifndef STRING_FOR_C++
#define STRING_FOR_C++
#include <string.h>
/************************************************************************/
/* 以下是C++实现 string 类,不全,后补
/************************************************************************/
//string类定义
class CCString
{
private:
mutable char * stringptr;
int length;
public:
CCString();
~CCString();
CCString(const char * tempchar);
CCString(const CCString & tempstring);
CCString & operator = (const CCString & tempstring);
public:
int Getlength()const;
bool Empty()const;
const char * Cstr()const;
char & operator[](int pos)const;
};
CCString::CCString()
{
length = 0;
stringptr = NULL;
}
//析构函数
CCString::~CCString()
{
delete []stringptr;
}
//赋值构造函数
CCString::CCString(const char * tempchar)
{
length = strlen(tempchar);
stringptr = new char[length +1];
strcpy(stringptr,tempchar);
}
//赋值构造函数
CCString::CCString(const CCString & tempstring)
{
length = tempstring.Getlength();
stringptr = new char[length+1];
strcpy(stringptr,tempstring.Cstr());
}
//重载=
CCString & CCString::operator=(const CCString & tempstring)
{
if (this != &tempstring)
{
delete []stringptr;
length = tempstring.Getlength();
stringptr = new char[length +1];
strcpy(stringptr,tempstring.Cstr());
}
return *this;
}
//得到长度
int CCString::Getlength() const
{
return length;
}
//是否为空
bool CCString::Empty() const
{
return length == 0;
}
//返回字符串指针
const char * CCString::Cstr()const
{
return (const char *)stringptr;
}
char & CCString::operator [](int pos) const
{
return stringptr[pos];
}
//复制
void StringCopy(CCString &target ,const CCString & pattern)
{
const char * getptr = pattern.Cstr();
char * tempstring = new char[strlen(getptr)+1];
strcpy(tempstring,getptr);
target = tempstring;
delete []tempstring;
}
//复制n个字符
void StringnCopy(CCString & taget,const CCString& pattern,int n)
{
const char * getptr = pattern.Cstr();
int length = (int) (strlen(getptr))>n ?(int) (strlen(getptr)): n;
char * tempstring =new char[length+1];
strncpy(tempstring,getptr,n);
tempstring[length] = '\0';
taget = tempstring;
delete []tempstring;
}
//连接
void Stringcat(CCString & taget,const CCString & pattern)
{
const char * tagettemp = taget.Cstr();
const char * patterntemp = pattern.Cstr();
char * tempstring = new char[strlen(tagettemp)+strlen(patterntemp)+1];
strcpy(tempstring,tagettemp);
strcat(tempstring,patterntemp);
taget = tempstring;
delete []tempstring;
}
//重载==
bool operator == (const CCString &taget ,const CCString & pattern)
{
return strcmp(taget.Cstr(),pattern.Cstr()) ==0;
}
//重载!=
bool operator != (const CCString &taget ,const CCString & pattern)
{
return strcmp(taget.Cstr(),pattern.Cstr()) !=0;
}
//重载<
bool operator< (const CCString &taget ,const CCString & pattern)
{
return strcmp(taget.Cstr(),pattern.Cstr())<0;
}
//重载>
bool operator >(const CCString &taget ,const CCString & pattern)
{
return strcmp(taget.Cstr(),pattern.Cstr())>0;
}
#endif
数据结构-string类(C++)
最新推荐文章于 2024-08-09 16:31:08 发布