资源简介
封装的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;
相关资源
- 请用指针数组的方法将字符串排序
- 用指针数组的方法将字符串排序
- 附近商家多门店地图导航V1.6.1 开源版
- DArray类与String类源码
- 对字符串进行哈夫曼编码和解码
- 自己动手写CPU第4阶段第一条指令ori的
- 开源处理器OpenMIPS模块连接关系图
- 基于PCL开源库fpfh+icp算法实现点云配准
- 如何阅读源代码,开源项目
- LabVIEW的XY图采用格式字符串切换时间
- FPGA串口收发字符串之串口接收模块
- 压缩和解压缩字符串
- 开源组件CsizingControlBar
- excelimportor.crx
- 全开源的进销存系统源码
- 将文件中的单词统计存入另一文件
- Shopex批量生成评论 绿色开源V7.0
- 开源飞控卡尔曼EKF3笔记干货
- 有一个共N个字符的字符串,存放在
- ROS开源机器人控制基础-源程序-百度云
- string.rar
- 字符串解密大作业
- wkt转arcgis之geometry第三方组件来自开源
- wbs43开源软件
- 32位汇编中定义Unicode字符串、使用S
- SourceGridMini
- OBD开源代码资料
- APM 2.8版开源飞控PCB\\SCH
- Struts——一种开源MVC的实现外文文献
- udev-080.tar.bz2
评论
共有 条评论