#include
#include
using
namespace std;
class
string
iterator end()
const_iterator begin()
const
const_iterator end()
const
string()
:_str
(new
char[16
]),//多餘乙個位置存放'\0'
_size(0
),_capacity(0
)//含參構造
string
(const
char
* str)
//析構函式
~string()
cout <<
"~string"
<< endl;
}//擴容
void
reserve
(size_t n)
}//簡單交換,沒有開空間的操作,只交換成員和資源
void
swap
(string& str)
//拷貝構造:現**法,**復用:建構函式
string
(const string& str)
:_str
(nullptr),
_size(0
),_capacity(0
)//賦值運算子:現**法,**復用:拷貝構造(傳參進行拷貝構造)
string&
operator
=(string str)
//字串有效長度
size_t size()
const
const
char
*c_str()
const
//尾插字元(實際可用insert實現)
void
pushback
(const
char
& ch)
//尾插
_str[_size]
= ch;
//更新size
_size++
; _str[_size]
='\0';}
//尾插字串(實際可用insert實現)
void
(const
char
* str)
//尾插
strcpy
(_str + _size, str)
;//更新size
_size +
= len;
}//+= 尾插字元(實際可用insert實現)
string&
operator+=
(const
char
& ch)
//+= 尾插字串(實際可用insert實現)
string&
operator+=
(const
char
* str)
//任意位置插入字元
void
insert
(size_t pos,
const
char
& ch)
//移動元素[pos,_size]:從後向前移動,首先移動最右端的字元,防止覆蓋
size_t end = _size +1;
//end >= pos:當pos = 0時,會死迴圈,訪問越界
while
(end > pos)
//插入
_str[pos]
= ch;
_size++;}
//任意位置插入字串
void
insert
(size_t pos,
const
char
* str)
int len =
strlen
(str)
;//檢查容量
if(_size + len > _capacity)
//移動元素[pos,_size]:從前向後移動,首先移動最右端字元,防止覆蓋
size_t end = _size + len;
while
(end > pos + len -1)
//插入
for(
int i =
0; i < len; i++
)//更新size
_size +
= len;}}
//迭代器遍歷:可讀可寫操作
void
eprintfstring
(string& str)
cout << endl;
}//迭代器遍歷:唯讀操作
void
printfstring
(const string& str)
cout << endl;
}
模擬實現string類
include using namespace std include class string string string a 2 為什麼要用 優點在哪 string void print string operator const string a string operator const s...
模擬實現string類
在c 中,string其實就是將字串封裝起來的類,呼叫類中的成員函式可以完成對類內的字串進行增刪查改,並且將操作符過載,可以更直觀的操作字串,省去了c語言中很多麻煩的操作,有現成的成員函式供我們使用。舉乙個簡單的例子 在c語言中要在一串字串的尾部拼接另乙個字串,我們需要做的事情就是定義兩個字串,要使...
string類模擬實現
define crt secure no warnings include include using namespace std class string iterator end const iterator begin const const iterator end const 無參建構函式...