自己簡單實現一下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 拷貝建構函式 也...