說明:有些函式返回的是string&(引用),有些是string(值),這取決於返回的物件是函式的區域性變數還是全域性變數。
string.hpp
#include
#include
#include
using
namespace std;
class
string
string
(const string& s)
:_size
(s._size)
,_capacity
(s._capacity)
void
swap
(string& s)
; string&
operator
=(string s);~
string()
}void
show()
;const
char
*c_str()
;//獲取string類中的c風格字串
const
char
&operator
(size_t index)
const
;//括號運算子
void
expand
(size_t n)
;//擴容
void
pushback
(char c)
;//插入乙個字元
void
pushback
(const
char
* str)
;//插入乙個字串
void
popback()
;//尾部刪除乙個字元
void
insert
(size_t pos,
char c)
;//pos位置插入乙個字元
void
insert
(size_t pos,
const
char
* str)
;//pos位置插入乙個字串
void
erase
(size_t pos, size_t n =1)
;//在pos位置刪除n個字串
size_t find
(char c)
;//返回string物件中第一次出現字元c的下標
size_t find
(const
char
* str)
;//返回string物件中第一次出現str的下標
string operator+(
char c)
; string&
operator+=
(char c)
; string operator+(
const
char
* str)
; string&
operator+=
(const
char
* str)
;bool
operator
>
(const string& s)
;bool
operator
>=
(const string& s)
;bool
operator
<
(const string& s)
;bool
operator
<=
(const string& s)
;bool
operator==(
const string& s)
;bool
operator!=(
const string& s)
;private
:char
* _str;
size_t _size;
size_t _capacity;
};
string.cpp
void string::
show()
void string::
swap
(string& s)
string& string::
operator
=(string s)
const
char
* string::
c_str()
void string::
expand
(size_t n)
void string::
pushback
(char c)
void string::
pushback
(const
char
* str)
void string::
insert
(size_t pos,
char c)
for(
int i = _size; i > pos; i--
) _str[pos]
= c;
++_size;
}void string::
insert
(size_t pos,
const
char
* str)
if(_capacity < _size + size)
for(
int i = _size; i >= pos; i--
)int i =0;
while(*
(str + i)
!='\0'
) _size = _size + size;
}void string::
popback()
void string::
erase
(size_t pos, size_t n)if(
0== n)
assert
(pos <= _size)
;while
((pos + n)
<= _capacity)
if(_size - n >0)
else
_str[_size]=0
;}size_t string::
find
(char c)
}return
(size_t)-1
;}size_t string::
find
(const
char
* str)
cur++
; _fast++;}
if(*cur ==
'\0')}
_slow++
; cur = str;
}return
(size_t)-1
;}string string::
operator+(
char c)
string& string::
operator+=
(char c)
string string::
operator+(
const
char
* str)
string& string::
operator+=
(const
char
* str)
bool string::
operator
>
(const string& s)if(
*_tmp >
*tmp)
else
}bool string::
operator
>=
(const string& s)
return
false;}
bool string::
operator
<
(const string& s)if(
*_tmp <
*tmp)
return
false;}
bool string::
operator
<=
(const string& s)
else
}bool string::
operator==(
const string& s)
tmp++
; _tmp++;}
return
false;}
bool string::
operator!=(
const string& s)
return
false
;}
模擬實現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 無參建構函式...