学习C++,对字符的处理

#include<iostream.h>
 /// <summary>
 /// 对字符操作的类
 /// </summary>
class MyByte
{

    public:

        MyByte();//构造函数

        ~MyByte();//析构函数

        void Assign(char* ,int);//赋值

        void Add(char* ,int);//添加

        void Add(char);

        void Add(int ,char)

        void Add(int ,char* ,int)

        int Remove(int ,int);//移除

        void Clear();//清空

        bool Find(int ,char* ,int);//查找

        bool Find(int ,char);

        int GetLen();//获取长度

        char* GetData();//获取数据

    private:

        char *data;

        int len;    
}

public MyByte::MyByte()

{

    data = 0;

    len = 0;

}

public MyByte::~MyByte()

{

    delete[] data;

    len = 0;

}

 /// <summary>
 /// 给成员变量赋值
 /// </summary>

void MyByte::Assign(char* p, int length)

{

    if(data)

    {

        delete[] data;

        len = 0;  

    }

    data = new char[length];

    len = length;

    memcpy(data,p,length);

}

 /// <summary>
 /// 在字符数组后面添加一个字符
 /// </summary>

void MyByte::Add(char ch)

{

    len++;

    char *t = new char[len];

    if(data)

    {

        memcpy(t,data,len-1);

    }

    t[len-1] = ch;

    delete[] data;

    data=t;

}

 /// <summary>
 /// 在字符数组后面添加长度为length的一串字符
 /// </summary>

void MyByte::Add(char* s, int length)

{

    len+=length;

    char *t = new char[len];

    if(data)

    {

        memcpy(t,data,len-length);

    }

    memcpy(t+len-length,s,length);

    delete[] data;

    data=t;

}

 /// <summary>
 ///从start起始位除添加一个字符
 /// </summary>

void MyByte::Add(int start, char ch)

{

    len++;

    char *t = new char[len];

    t[start] = ch;   

    int j=0;

    for(int i=0;i<len;i++)

    {

        if(i==start)

        {

            t[i+1] = data[j++];

        }

        else

        {

            t[i] = data[j++];

        }

    }

   delet[] data;

    data = t;
    
}


 /// <summary>
 /// 从start起始位处添加一串长度为length的字符
 /// </summary>

void MyByte::Add(int start, char* str, int length)

{

    len+=length;
    
    char *t = new char[len];
    

    int j=0;

    for(int i=0;i<len;i++)

    {

        if(i == start)

        {

            memcpy(t+start,str,length);

            i += length;

        }  

        else

        {

            t[i] = data[j++];

        }  

    }

    delete[] data;

    data = t;

}

 /// <summary>
 /// 移除从start位置开始长为length的字符
 /// </summary>
int MyByte::Remove(int start, int length)

{

    if(start+length>len)

    {

        return 0;

    }

   

    char *t = new char[len-length];

    int j=0;

    for(int i=0;i<len-length;i++)

    {

        if(i<start || i>start+length-1)

             t[j++] = data[i];

    }

    delete[] data;

    data = t;

    len = len-length;

    return 1;

}

 /// <summary>
 /// 获取字符
 /// </summary>

char* MyByte::GetData()

{

    return data;

}

 /// <summary>
 /// 获取长度
 /// </summary>

int MyByte::GetLen()

{

    return len;

}

 /// <summary>
 /// 查找是否存在字符串
 /// </summary>
bool MyByte::Find(int start, char* str, int length)

{

    if(start + length > len)

    {

        return false;
    }

   

    char *t = d + start;

    for(int i=0;i<=len-length;i++)

    {

        int flag = 0;

        for(int j=0;j<length;j++)

        {

            if(t[i+j]!=str[j])

            {

                flag = 1;
                break;

            }

        }

        if(flag == 0)

        {
            return true;      

        }

    }

    return false;

}
 /// <summary>
 /// 查找是否存在字符
 /// </summary>
bool MyByte::Find(int start, char ch)
{

    if(start + 1 > len)

    {

        return false;

    }
    

    char *t =  data + start;

   

    for(int i=0;i<len;i++

    {
        if(t[i] == char)

            return true;

    }    

    return false;
}

 /// <summary>
 /// 清空字符数组
 /// </summary>

void MyByte::Clear()

{

    delete[] data;

    data = 0;

    len = 0;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值