• 大小: 3KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: 字符串  string  开源  

资源简介

封装的MyString类,实现了大部分字符串类的操作。 包括:构建,操作符重载,追加,赋值,比较,拷贝,查找,替换,交换,格式化,转换成其他常用类型,大小写切换等。 其他未实现的功能,希望各位修改后分享...

资源截图

代码片段和文件信息

/****************************************************************
*         文件名 MyString.cpp
*        功能描述 自己写的 string 类
*         作者 武立强
*         时间 2009-03-17
*                备注 我的QQ:724992537 有问题多联系..
  *   修改 廖俊军
 *   时间 2013-11-22
 *  备注  QQ:384668960
****************************************************************/

#include “MyString.h“

MyString::MyString()
{
    m_data = new char[1];
    *m_data = ‘\0‘;
}
        
MyString::MyString(const MyString& _other)
{
    m_data = new char[strlen(_other.m_data) + 1];
    strcpy(m_data _other.m_data);                // 类的成员函数可以直接访问数据成员

}
    
MyString::MyString(const char* _pStr)
{
    if( NULL == _pStr )
    {
        m_data = new char[1];
        *m_data = ‘\0‘;
    }
    else
    {
        m_data = new char[strlen(_pStr) + 1];
        strcpy(m_data _pStr);                    // strcpy() 函数会自动加 ‘\0‘ 

    }
}

MyString::MyString(unsigned int _length const char _ch)
{
    m_data = new char[_length + 1];
    memset(m_data _ch _length);
    m_data[_length] = ‘\0‘;
}

MyString::MyString(const char* _pStr unsigned int _length)    
{
    if( NULL == _pStr )
    {
        m_data = new char[1];
        *m_data = ‘\0‘;
    }
    else
    {
        m_data = new char[_length + 1];
        strncpy(m_data _pStr _length);        // strncpy() 不会自动加 ‘\0‘

        m_data[_length] = ‘\0‘;
    }    
}

MyString::MyString( const MyString& _s unsigned int _index unsigned int _length )
{
    if( _index >= strlen(_s.m_data) )
    {
        m_data = new char[1];
        *m_data = ‘\0‘;
    }
    else
    {
        m_data = new char[_length +1];
        strncpy(m_data &_s.m_data[_index] _length);
        m_data[_length] = ‘\0‘;
    }
}


// 析构函数

MyString::~MyString()
{
    delete []m_data;
}

const char * MyString::c_str(void) const
{
    return m_data;
}

char * MyString::c_str(void)
{
    return m_data;
}

unsigned int MyString::length(void) const
{
    return strlen(m_data);
}

unsigned int MyString::size( void ) const
{
    return strlen(m_data);
}

void MyString::clear( void )
{
    delete []m_data;
    m_data = new char[1];
    *m_data = ‘\0‘;
}
float MyString::toFloat(void)
{
return atof(this->m_data);
}
int MyString::toInt(void)
{
return atoi(this->m_data);
}
long MyString::toLong(void)
{
return atol(this->m_data);
}
double MyString::toDouble(char** endptr)
{
return strtod(this->m_dataendptr);
}
MyString MyString::toUpper(void)
{
int i;
MyString s(*this );
for(i=0;i s.m_data[i]=toupper(s.m_data[i]);
return s;
}
MyString MyString::toLower(void)
{
int i;
MyString s(*this);
for(i=0;i s.m_data[i]=tolower(s.m_data[i]);
return s;
}

MyString& MyString::operator=(const MyString& _other)
{
    if( this == &_other )    // 防止自己赋值给自己

    {
        return *this;
    }

    delete []m_data;

评论

共有 条评论