zoukankan      html  css  js  c++  java
  • 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 = ''; }
    cMyString::cMyString(char* str)
    {
    if (NULL==str)
    {
    m_str = new char; m_str = '';
    }
    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 = '';
    }
    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)=='')
    {
    return iPos;
    }
    }
    ++iPos;
    }
    // int len1 = getSize();
    // unsigned short len2 = strlen(str);
    // if (str == NULL || *str == '' || 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;
    }

  • 相关阅读:
    InjectAPC全部项目(Win32和Win64位)
    Codeforces Round #377 (Div. 2)
    Codeforces Canada Cup 2016
    UVa 1395 (最小生成树)
    空间表SpaceList
    线程中的临界区的应用
    【题解】狼和羊-C++
    【基础算法-树状数组】入门-C++
    【题解】在你窗外闪耀的星星-C++
    【题解】[NOIP模拟题]我要的幸福-C++
  • 原文地址:https://www.cnblogs.com/huninglei/p/5489318.html
Copyright © 2011-2022 走看看