string类封装
class cMyString
{
char* m_str;
int m_strSize;
public:
cMyString();//指针指向一个空字符串
cMyString(char* str);//字符串初始化
~cMyString();
char* getStr()const;
int getSize();//获得成员变量字符串的长度
void setStr(char* str);//重新设置对象的成员变量的字符串
void MyStrCat(char* str);//对象的成员变量字符串连接字符串
void MyStrCat(cMyString* str);//对象的成员变量字符串连接成员变量字符串
void MyStrCpy(char* str);//字符串拷贝到对象的成员变量字符串
void MyStrCpy(cMyString* str);//别的cMyString成员变量字符串拷贝shis对象成员变量字符串
int MyStrCmp(char* str);//字符串和对象的成员变量比较,为0相等 为正this->对象变量字符串大 为负this->对象变量字符串小
int MyStrCmp(cMyString* str);//别的cMyString成员变量字符串和对象的成员变量比较,为0相等 为正this->对象变量字符串大 为负//this->对象变量字符串小
int MyFindChar(char c);// 查找单个字符的下标
int MyFindStr(char* str);//从成员字符串中找字符串
};
cMyString::cMyString(){ m_str = new char; m_str = '\0'; }
cMyString::cMyString(char* str)
{
if (NULL==str)
{
m_str = new char; m_str = '\0';
}
int len = strlen(str);
m_str = new char[len + 1];
strcpy(m_str, str);
}
cMyString::~cMyString(){ delete[] m_str; }
int cMyString::getSize(){ return strlen(m_str); }
char* cMyString::getStr()const { return m_str; }
void cMyString::setStr(char* str)
{
delete[] m_str;
if (NULL == str)
{
m_str = new char; m_str = '\0';
}
int len = strlen(str);
m_str = new char[len + 1];
strcpy(m_str, str);
}
void cMyString::MyStrCat(char* str)
{
int len1 = strlen(m_str);
int len2 = strlen(str);
char* tmp = new char[len1 + len2 + 1];
strcpy(tmp, m_str);
strcat(tmp, str);
delete[]m_str;
m_str = tmp;
}
void cMyString::MyStrCat(cMyString* str)
{
MyStrCat(str->m_str);
}
void cMyString::MyStrCpy(char* str)
{
if (NULL==str)
{
return;
}
delete m_str;
m_str = NULL;
int len = strlen(str);
m_str = new char[len + 1];
strcpy(m_str, str);
}
void cMyString::MyStrCpy(cMyString* str)
{
MyStrCpy(str->m_str);
}
int cMyString::MyStrCmp(char* str)
{
return strcmp(m_str, str);
}
int cMyString::MyStrCmp(cMyString* str)
{
return MyStrCmp(str->m_str);
}
int cMyString::MyFindChar(char c)
{
int i = 0;
char* tmp = m_str;
while (*tmp)
{
if (*tmp==c)
{
return i;
}
tmp++; i++;
}
return - 1;
}
//djklsf323
int cMyString::MyFindStr(char* str)
{
if (str==NULL)
{
return -1;
}
int lenSubStr = strlen(str);
int lenM = getSize();
if (lenM==0 )
{
return -1;
}
int iPos = 0;
while (iPos<=lenM-lenSubStr)
{
int j = 0;
while (*(str+j)==*(m_str+iPos+j))
{
++j;
if (*(str+j)=='\0')
{
return iPos;
}
}
++iPos;
}
// int len1 = getSize();
// unsigned short len2 = strlen(str);
// if (str == NULL || *str == '\0' || len2>len1)
// {
// return -1;
// }
// int i = 0;
// char*tmp = m_str;
// while (strlen(tmp)>=len2)
// {
// char temp;
// temp=*(tmp + len2);
// *(tmp + len2) = 0;
// if (strcmp(tmp,str)==0)
// {
// *(tmp + len2) = temp;
// return i;
// }
// *(tmp + len2) = temp;
// i++; tmp++;
// }
return -1;
}
int _tmain()
{
cMyString str1("123abc45tggf");
int x=str1.MyFindStr("tgg");
str1.getSize();
return 0;
}
- 【黑马】程序员————String类,正则表达式,基本数据类型封装类。
- java的string类和基本类型封装类 使用等号时 是传值的而不是引用
- 关于java基础--基本数据类型封装以及String类方法讲解
- Java学习笔记(四)--封装 String类 StringBuffer StringBuilder
- String类封装
- 自己封装String类
- 自己动手封装一个string类
- String类封装
- 封装,static,String类
- vs2013封装string类
- C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper
- springMvc-视图模型封装及注解参数
- linkin大话面向对象--封装和隐藏
- Windows系统封装部署全过程介绍
- 一个封装了在Ajax下弹出Alert、showModelessDialog、showModalDialog窗口的类
- 利用Boost.Python将C++代码封装为Python模块
- Bottom Sheet的使用和BottomSheetDialogFragment的封装
- Java工具类之——BigDecimal运算封装(包含金额的计算方式)
- 读取配置文件的封装Dao
- [置顶] Yolo的搭建和在Windows下封装以及工程应用