#ifndef CMyString
#define CMyString
#define max_string_size 1024???????????????????????????????? //第一串的最大長度為1024
class CMyString
{
private:
?int length;?????????????????????????????????????????????? //字符串的實際長度
?
?char str[max_string_size+1];????????????????????????????? //包括最后的結束符 字符串的存處空間;
public:
?
?CMyString();
?
??? CMyString(const char * s);??????????????????????????????? //構造一個字符指針所指的對象
?
?~CMyString();
?
?concatenate(const concatenate *s);??????????????????????????????? //將字符串S插入到本字符串之后
?
?insert(const int pos, const CMyString *s);???????????????? //將字符串插入到本字符串POS所指的位置
?
?delete(const int pos, const int len);????????????????????? //刪除從POS位置起的連續len個字符
???
?CMyString substring(const int pos, cont int len);????????? //從pos位置起 提取一個長度為len的子串
?char *getstring();???????????????????????????????????????????????? ?//獲取本字符串
?int getstring();???????????????????????????????????????????????????????? / /獲取字符串長度
?int find(const CMyString *s);?????????????????????????????? //在字符串中查找S首次出現的位置,如不包含S 則返回0;
???
};
#endif
//////////////////////////////串類的實現/////////////////////////////////////////
#include<iostream.h>
#include"CMyString.h"
#include"memory.h"
#include"stdafx.h"??????????????????? //不懂 stdafx.h 是什么意思
CMyString::CMyString()
{
?length=0;
?str[0]=0;
}
//////////////////構造2//////////
CMyString::CMyString(const char *s)?????????????????????
{
?char *p1,*p2;
?for(length=0,p1=str,p2=(char *)s;? *p2;? length++)
??*p1++ = *p2++;
?*p1=0;
}
/////////////////////析夠//////////
CMyString::~CMyString()
{}
?
//////////////將字符串S插入到本字符串之后//////////////
CMyString::concatenate(const concatenate *s)
{
?if(length+s ->length <= max_string_size+1)
?{
??mencpy(str+length, s->str .s->length+1);
??length += s->length;
?}
?else
?{
??cout<<"error"<<endl;
?}
}
////////////刪除從POS位置起的連續len個字符///////
CMyString::delete(const int pos, const int len)
{
?int rlen = len;
?if(pos +rlen > length)]
??rlen = length - pos;
?length -= rlen;
?memcpy( str +pos,str+pos+rlen, length - pos+1);
}
/////////////////在字符串中查找S首次出現的位置,如不包含S 則返回0///////////////
int CMyString::find(const CMyString *s)
{
?..
}
?
////////////////獲取字符串長度/////////
int CMyString::getlegth()
{
?return length;
}
char *CMyString::getstring()
{
?char *tmpstr = new char[length+1];
?memcpy(tmpstr , str ,length +1);
?return tmpstr;
}
////////////////將字符串插入到本字符串POS所指的位置/////////
CMyString::insert(const int pos, const CMyString *s)
{
?if(length + s -> length <= max_string_size)
?{
??memcpy(str + pos + s -> length, str+pos,length-pos+1);
??memcpy(str+pos,s->str,s->length);
??length +=s ->length;
?}
?else
?{
??cout<<"error"<<endl;
?}
}
/////////////////從pos位置起 提取一個長度為len的子串//////////
CMyString CMyString::substring(const int pos,const int len)
{
?int rlen = len;
?CMyString tmpstr("");
?if(pos +len >length)
??rlen = length - pos;
?memcpy(tmpstr.str,str+pos,len);
?tmpstr.length = rlen;
?tmpstr.str[tmpstr.length] = 0;
?return tmpstr;
}