资源简介
封装的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;
相关资源
- 易语言字符串加解密源码
- 开源1A锂电池充电板TP4056原理图+PCB
-
st
yles 引文样式语言( CSL ) 引文样 - 开源电调BLHeli硬件PCB 4层板 2.5cm宽
-
开源tinyxm
l - 一个比较完整的开源cad 图形程序
- 开源的nmealib
- 文学研究助手(字符串的查找模式匹
- 字符串括号匹配(c实现)
- 比较两个字符串大小汇编语言源代码
- 十六进制与字符串互转
- CS1.6 透视自瞄多功能 开源.e
- 非几何字符串和M理论背景下的非缔合
- 精确的Chern-Simons /拓扑字符串对偶
- 带超标违规的带电黑色米糠周围字符
- SpringBoot实战(第4版)清晰版.pdf.zip
- Excel自定义函数:字符串相似度
- IEC60870开源实现库
- 开源图像库leptonica头文件和库文件
- Unity 声音播放插件,支持将字符串转
- 开源自写磁盘还原
- JMeter开源性能官方书籍pdf
- JVM系列之String.intern的性能解析
- 人脸识别开源SDK源码
- 基于字符串/ M理论隐藏扇区的暗物质
- 字符串连接:来自字符串的类似于M
- st官方开源的电机库foc5.0
- 原生网页封装Nativefier.zip
- 方滨兴 在线社交网络分析 方滨兴
- robomaster自动识别开源
评论
共有 条评论