C++ String简易实现
来源:互联网 发布:deepin15 linux 教程 编辑:程序博客网 时间:2024/05/16 10:36
这是之前学习C++时,书中要求自己实现一份简易String,然后就实现了一份....下面是部分功能代码,提供给需要的人参考下,如果有什么问题也可以下方评论~
“kString.h”
#ifndef KSTRING_H_#define KSTRING_H_#include <iostream>class kString{private: char* str; int Len;public: //构造函数和析构函数 kString(); kString(const char* str_t); kString(const kString& t); kString& operator=(const kString& t); ~kString(); int kSize(); char& operator[](int n); char operator[](int n)const; //关系运算符重载 friend bool operator>(const kString& s1,const kString& s2); friend bool operator<(const kString& s1,const kString& s2); friend bool operator==(const kString& s1,const kString& s2); friend bool operator>=(const kString& s1,const kString& s2); friend bool operator<=(const kString& s1,const kString& s2); friend std::ostream& operator<<(std::ostream& out_t, const kString& t);};#endif“kString.cpp”
#include "kString.h"#include <iostream>//默认构造函数 创建空StringkString::kString(){ str = NULL; Len = 0;}kString::kString(const char* str_t){ Len = strlen(str_t); str = new char[Len+1]; strcpy(str,str_t);}kString::kString(const kString& t){ Len = t.Len; str = new char[Len+1]; strcpy(str,t.str);}//虽然加入证同测试的赋值操作 但是该函数并不具备异常安全性kString& kString::operator=(const kString& t){ if(this==&t){ //证同测试 return *this; }else{ delete []str; Len = t.Len; str = new char[Len+1]; //这里可能会引发异常(std::bad_alloc)导致类数据败坏 strcpy(str,t.str); return *this; }}/*//既有证同测试也增加了异常安全性kString& kString::operator=(const kString& t){ if(this==&t){ return *this; }else{ char* str_t = str; //用作临时存储 当new正常执行没发生异常 再将旧指针所指内存释放掉 Len = t.Len; str = new char[Len+1]; strcpy(str,t.str); delete str_t; return *this; }}*///析构函数 用于释放指向的字符串所在内存kString::~kString(){ delete[]str;}//返回当前String字符数int kString::kSize(){ return Len;}//重载<< 以便可以直接对kString对象进行输出操作std::ostream& operator<<(std::ostream& out_t, const kString& t){ out_t << t.str; return out_t;}//non-const版char& kString::operator[](int n){ return str[n];}////const char& kString::operator[](int n)const{// return str[n];//}//const版 用于const对象时调用char kString::operator[](int n)const{ return str[n];}//以下是对关系运算符重载 以便可以直接对该kString对象进行比较bool operator>(const kString& s1,const kString& s2){ if(strcmp(s1.str,s2.str)>0){ return true; }else{ return false; }}bool operator<(const kString& s1,const kString& s2){ if(strcmp(s1.str,s2.str)<0){ return true; }else{ return false; }}bool operator==(const kString& s1,const kString& s2){ if(strcmp(s1.str,s2.str)==0){ return true; }else{ return false; }}bool operator>=(const kString& s1,const kString& s2){ if(strcmp(s1.str,s2.str)>0 || strcmp(s1.str,s2.str)==0){ return true; }else{ return false; }}bool operator<=(const kString& s1,const kString& s2){ if(strcmp(s1.str,s2.str)<0 || strcmp(s1.str,s2.str)==0){ return true; }else{ return false; }}测试代码就不帖上来了,测试功能都正常~因为是简易版与C++String相比还是有很多功能没有去实现,有兴趣的可以加以完善 添加其他相应功能~
阅读全文
0 0
- C++ String简易实现
- c简易实现数据库
- 【RLIB】String 的简易C++实现
- String类的简易实现(C++语言)
- C++ 简易string类实现(一)
- 【C#】简易网页计算器实现
- C语言实现简易三子棋
- C语言实现简易通讯录
- 【简易通讯录】-----C语言实现
- C语言实现简易通讯录
- C语言实现简易版三子棋
- C++,string实现
- 【C/C++】String类实现
- C#delegate的C++简易实现
- C语言实现简易词法分析器
- c语言简易实现linux终端
- 简易C/C++日志代码实现
- 利用c实现简易的ping
- Github上传代码菜鸟超详细教程
- hello csdn
- 把知乎丁香医生的文章及回答转pdf
- Android 开发之 Gradle那些事儿(三)
- 滚动条实现RGB颜色的调制(窗体程序)--JAVA基础
- C++ String简易实现
- 1.动态规划算法
- mybatis 异常处理:Invalid bound statement (not found)
- 1054. 求平均值 (20)
- Scala处理XML文件(一)
- Scala处理XML文件(二)
- 什么是TTL、RS232、RS485?
- C#--数组
- vue.js 组件 之 prop 传递数据