模擬實現String類(C )

2021-09-17 04:48:48 字數 2768 閱讀 1168

以下就是string類的模擬實現:

測試環境為vs2013

#define _crt_secure_no_warnings 1

#include

#include

#include

using namespace std;

class string

//拷貝建構函式

string

(const string& s)

:_str

(new char

[strlen

(s._str +1)

])//賦值運算子過載

string& operator=

(const string&s)

return

*this;

}//operator過載,可讀可寫介面

char

& operator[

](size_t pos)

//const介面

const

char

& operator[

](size_t pos)

const

//迭代器

iterator begin()

iterator end()

const iterator begin()

const

const iterator end()

const

size_t size()

const

//析構函式

~string()

}const

char

*c_str()

const

//只增容,不減少容量,拷貝原有內容,釋放原有空間

void

reserve

(size_t n)

}//尾插

void

pushback

(char c)

_str[_size]

= c;

_size++

; _str[_size]

='\0';}

//尾刪

void

popback()

}void

resize

(size_t n,

char c)

if(n > _size)

// _size < n <= _capacity

_size = n;

_str[_size]

='\0';}

//刪除

void

erase

(size_t pos, size_t len)

else

_size -

= len;}}

//追加

void

(const

char

* str)

strcpy

(_str + _size, str)

; _size +

= sz;

}//插入字元

void

insert

(size_t pos,

char c)

//元素依次向後移動,留出位置

size_t end = _size;

for(size_t i = end; i >= pos; i--

) _str[pos]

= c;

_size++

; _str[_size]

='\0';}

//插入字串

void

insert

(size_t pos,

const

char

* str)

size_t end = _size + len;

while

(end > pos+len-1)

while

(*str)

_size +

= len;

}//查詢字元

size_t find_ch

(char c)

}return npos;

//return -1;

}//查詢字串

size_t find_str

(size_t pos,

char

* str)

else

return npos;

} string& operator+=(

char c)

string& operator+=(

const

char

* str)

string& operator+=(

const string&s)};

const size_t string:

:npos =-1

;//輸出運算子過載

ostream& operator<<

(ostream& _cout,

const string&s)

//普通列印

void

print_string

(const string&s)

cout << endl;

}//用迭代器來列印

void

print_string_iterator

(const string& s)

cout << endl;

}void

test1()

intmain()

模擬實現string類 c

include include using namespace std class string string const string m 拷貝建構函式 string 析構函式 string operator string m1 賦值運算子過載 s new char strlen m1.s 1 s...

模擬實現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語言中要在一串字串的尾部拼接另乙個字串,我們需要做的事情就是定義兩個字串,要使...