string類的簡單實現

2021-06-19 03:31:12 字數 2502 閱讀 8119

string類是stl裡面個乙個基礎類,同時也是乙個容器。stl在string類裡面塞了很多東西,大概有106個成員函式,以及大量的typedef、巨集,晦澀難懂。本文只是簡單通過物件導向的方法簡單實現了乙個string,以後會在此基礎進行擴充和改進。

#ifndef mystring_h

#define mystring_h

#include#includenamespace chu

mystring(const char* p);//construct from a c-style string

mystring(char ch, int n);//construct from repeated charcter

mystring(int number);//construct string representation of integer

mystring(const mystring& rstr);//copy constructor

~mystring();

int length()const //return length excluding terminating null

int find(char ch)const; //find the occurrence of a character

int find(const char* pstring)const;//find the occurrence of c-style string

int find(const mystring& rstring)const;///find the occurrence of a mystring as a sub-string

void show()const;//output the string

mystring& operator=(const mystring& str);//overloaded assignment operator

mystring operator+(const mystring& str);//string concatenation

const char& operator(int index)const;//subscript operator for const objects

char& operator(int index);//subscript operator for non-const objects

/*comparison operator all return type bool*/

bool operator==(const mystring& rstr)const;

bool operator!=(const mystring& rstr)const;

bool operator<(const mystring& rstr)const;

bool operator>(const mystring& rstr)const;

//return an object corresponding to a substring

mystring operator()(int index, size_t length)const;

//overloaded input and output operator

friend std::istream& operator>>(std::istream& in, mystring& str);

friend std::ostream& operator<<(std::ostream& out, mystring& str);

};}#endif

#include"mystring.h"

#include#includenamespace chu

mystring::mystring(char ch, int n)

*(pstr+strlen) = '\0';

} mystring::mystring(int num)

strlen = count;

std::cout<<"s"<= 0; --i, ++j )

else

if(j == length)

if(j > 0 && j < length)

++i;

}std::cout<(const mystring& rstr)const

mystring mystring::operator()(int index, size_t length)const

temp[i] = '\0';

if(!str.pstr)

delete str.pstr;

str.pstr = new char[i+1];

strcpy(str.pstr,temp);

str.strlen = i;

} std::ostream& operator<<(std::ostream& out, mystring& str)

else

{ out<

string類的簡單實現

include class string string string const char ch else string string const string str string string string string operator const string str string stri...

自己實現簡單的string類

1.前言 最近看了下 c primer 覺得受益匪淺。不過紙上得來終覺淺,覺知此事須躬行。今天看了類型別,書中簡單實現了string類,自己以前也學過c 不過說來慚愧,以前都是用c來寫程式,學的c 基本都忘記了,也說明自己以前對c 的理解不夠深入。基於這些,覺得有必要動手來寫寫c 的一些程式了,畢竟...

自己實現簡單的string類

1.前言 最近看了下 c primer 覺得受益匪淺。不過紙上得來終覺淺,覺知此事須躬行。今天看了類型別,書中簡單實現了string類,自己以前也學過c 不過說來慚愧,以前都是用c來寫程式,學的c 基本都忘記了,也說明自己以前對c 的理解不夠深入。基於這些,覺得有必要動手來寫寫c 的一些程式了,畢竟...