簡單實現一下string類

2021-10-05 18:12:22 字數 3310 閱讀 2498

自己簡單實現一下string類,**如下:

//自己簡單實現一下string類

#pragma warning( disable : 4996)

class

mystring

public

:mystring()

:_data

(null),

_len(0

)//default constructor

mystring

(const

char

*p):

_len

(strlen

(p))

//constructor

mystring

(const mystring&str)

:_len

(str._len)

//copy constructor

mystring&

operator=(

const mystring&str)

//copy assignment

else

return

*this;}

//c++11

mystring

(mystring&&str)

noexcept

:_data

(str._data)

,_len

(str._len)

//move constructor 形參是右值引用

mystring&

operator

=(mystring&&str)

noexcept

//move assignment

return

*this;}

~mystring()

//destructor

char

*get()

const

bool

operator==(

const mystring&rhs)

const

bool

operator

<

(const mystring&rhs)

const

mystring operator+(

const mystring&rhs)

mystring&

operator+=

(const mystring&rhs)

this

->_len +

= rhs._len;

char

*p_old =

this

->_data;

this

->_data =

newchar

[this

->_len +1]

;strcpy

(this

->_data, p_old)

;strcat

(this

->_data, rhs._data)

;delete

p_old;

return

*this;}

mystring&

operator+=

(const

char

&rhs)

char

&operator

(const size_t index)

return

this

->_data[index];}

//ostream

friend ostream&

operator

<<

(ostream& out,

const mystring &str)

//友元函式

//需要把運算子過載函式宣告為類的友元函式,這樣我們就能不用建立物件而直接呼叫函式

return out;

}// istream

friend istream&

operator

>>

(istream& in, mystring& str)

//友元函式

return in;

}//這裡操作符過載只簡單地寫幾個,其他就不寫了,不難

bool

isempty()

size_t length()

const

char

*c_str()

//將c++的string轉化為c的字串,c_str()生成乙個const char *指標

mystring&

(const mystring&rhs)

mystring substr

(size_t pos,

const size_t n)

//substr返回的是物件,不是引用 n)返回乙個包含s中從pos開始的n個字元的拷貝

ret._data[n]

='\0'

;return ret;

} mystring&

erase

(size_t pos, size_t n)

//erase(pos,n)刪除從pos開始的n個字元if(

(pos + n -1)

>=

this

->_len)

//自動修正功能

char

*p_old =

this

->_data;

this

->_len -

= n;

//更新_len

this

->_data =

newchar

[this

->_len +1]

;for

(size_t i =

0; i < pos; i++

)//p_old陣列下標[0,pos-1]

for(size_t i = pos; i <

this

->_len; i++

)//p_old陣列下標[pos+n,pos+_len-1]

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類的簡單實現

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

乙個string類的簡單實現

string類中使用到了賦值建構函式 複製建構函式 建構函式 預設建構函式 析構函式 過載操作符等一些類操作 class string string const char str string const char str,int n string const string src 拷貝建構函式 也...