c++写的一个简单的string类
来源:互联网 发布:神作小说 知乎 编辑:程序博客网 时间:2024/06/06 13:24
这是刚开始学c++时候写的一个string类,有些细节还值得推敲,一直没时间重写写过,放在这以后再改改
#ifndef _MYSTRING_H#define _MYSTRING_H#include<cctype>#include<algorithm>#include<vector>#include<cassert>namespace mstr{class mystring{public:typedef unsigned int size_type;mystring(){}; mystring(size_type n,char c):data(n,c){}mystring(const char* cp);~mystring();size_type size()const{return data.size();}char& operator[](size_type i);const char& operator[](size_type i)const;friend std::istream& operator>>(std::istream&,mystring&);friend std::ostream& operator<<(std::ostream&,const mystring&);mystring& operator+=(const mystring&);mystring getSub(size_type sBegin,size_type Len);const mystring getSub(size_type sBegin,size_type Len)const;const char* c_str()const;bool hasSub(const mystring&sub);bool operator<(const mystring&ls)const;private:std::vector<char> data; };mystring::mystring(const char* cp){int i=0;while(cp[i]!='\0'&&++i);assert(cp[i]=='\0');std::copy(cp,cp+i,std::back_inserter(data));}char& mystring::operator[](size_type i){return data[i];}const char& mystring::operator[](size_type i)const{return data[i];}mystring& mystring::operator+=(const mystring&s){std::copy(s.data.begin(),s.data.end(),std::back_inserter(data));return *this;}bool mystring::operator<(const mystring&ls)const{size_type i=0;for(;i!=size()&&i!=ls.size();i++){if(data[i]==ls[i])continue;else if(data[i]>ls[i])return false;elsereturn true;}if(i==ls.size()&&i!=size())return true;else return false;}mystring mystring::getSub(size_type sBegin,size_type Len){mystring sub;if(sBegin+Len>=size())return 0;for(size_type i=0;i!=Len;i++)sub[i]=data[i+sBegin];return sub;}const mystring mystring::getSub(size_type sBegin,size_type Len)const{mystring sub;if(sBegin+Len>=size())return 0;for(size_type i=0;i!=Len;i++)sub[i]=data[i+sBegin];return sub;}const char* mystring::c_str()const//?????????{size_type len=size()+1;char *str=new char[len];for(size_type i=0;i!=len-1;i++){str[i]=data[i];}str[len-1]='\0';return str;}bool mystring::hasSub(const mystring& sub){if(sub.size==0)return true;size_type i=0,j=0;while(i!=size()){while(data[i]==sub[j]){i++;j++;if(j==sub.size())return true;if(i==size())return false;}i++;}return false;}mystring::~mystring(){}std::ostream& operator<<(std::ostream& os,const mystring& s){for(mystring::size_type i=0;i!=s.size();i++)os<<s[i];return os;}std::istream& operator>>(std::istream& is,mystring& s){s.data.clear();char c;while(is.get(c)&&isspace(c));if(is){do s.data.push_back(c);while(is.get(c)&&!isspace(c));}return is;}int cmp(const mystring&s1,const mystring& s2){if(s1<s2)return -1;else if(s2<s1)return 1;elsereturn 0;}mystring operator+(const mystring& left,const mystring& right){mystring r=left;r+=right;return r;}}//the end of namespace mstr#endif
- c++写的一个简单的string类
- c写的一个简单的计算器
- 写一个简单String类
- 学了String写的一个简单的小功能。
- 一个简单的String类
- 写一个仿string的类
- 写一个简单的可变参数的C函数
- 写一个简单的可变参数的C函数
- 一个简单的写wave文件头的c函数
- C语言写的一个简单的计算器
- c写的一个简单的打飞机游戏
- asp.net+c#+access写的一个简单留言板程序
- 用C语言写一个简单的通讯录
- c语言写了一个简单的正弦波函数
- c语言写了一个简单的正弦波函数
- C语言写的一个简单文件加密程序
- 用C写一个简单的win32服务程序
- 用c写的一个简单web服务器实现
- 基于ISE的仿真(波形图法&V文件法)
- HDU2136:Largest prime factor
- 创业并快乐着的六个习惯
- C语言的函数参数
- vxworks5.5标准输出重定向到Shell上
- c++写的一个简单的string类
- 听道笔记-03.17.2013 《传福音》---范大胜长老
- 抽象类中的abstract和interface的区别
- 项目二
- 经典转载
- 设计模式六大原则
- weblogic apache http2.0 的httpf.cofig 配置
- jquery 调用IE缓存,不更新数据
- JQuery的使用方法汇总(2)——无敌的选择器