自定義string類

2021-09-25 01:36:49 字數 2504 閱讀 9075

在學習c++過程中,相比起使用char*或者是char陣列,使用 string 類對字串進行操作要方便快速很多。string 並不是c++的基本資料型別,它實際上是乙個類,那麼這個類具體是怎麼實現對字串的操作的呢?如何去自定義乙個類去實現string類同樣的效果呢?

首先,先列舉一些 string 類可以進行的一些操作:

1、建立乙個 string 類物件

2、建立乙個新的string 類物件,並用字串初始化賦值

3、給 string 類物件賦值

4、用已有的string 類物件初始化另乙個string 類物件

5、將輸入的字元賦值給 string 類物件

6、輸出 string 類物件

7、訪問 string 類物件的某個元素

……本次只實現以上功能。

以下是**:

1、 mystring 類的宣告

#pragma once

#include

using

namespace std;

class

mystring

;

2、 mystring 類的實現
#include

"mystring.h"

// 無參建構函式

mystring::

mystring()

// 析構函式

mystring::

~mystring()

}// 有參建構函式

mystring::

mystring

(const

char

*ch)

len =

strlen

(ch)

;this

->str =

newchar

[len +1]

;strcpy_s

(this

->str,

(len +1)

, ch);}

// 拷貝建構函式 深拷貝

mystring::

mystring

(const mystring & mystring)

// 過載 =

mystring & mystring::

operator=(

const

char

*ch)

if(ch !=

null

)return

*this;}

// 過載 <<

ostream &

operator

<<

(ostream & os, mystring & mystring)

return os;

}// 過載 >>

istream &

operator

>>

(istream & is, mystring & mystring)

char temp_str[

4096]=

; is >> temp_str;

// 輸入

mystring.len =

strlen

(temp_str)

; mystring.str =

newchar

[mystring.len +1]

;strcpy_s

(mystring.str,

(mystring.len +1)

, temp_str)

;return is;

}// 過載

char

& mystring::

operator

(int index)

// 過載賦值運算子

mystring & mystring::

operator

=(mystring & mystring)if(

this

->str !=

null

)//清空原有的資料

this

->len = mystring.len;

this

->str =

newchar

[this

->len +1]

;//申請分配一塊新的記憶體

strcpy_s

(this

->str,

(this

->len +1)

, mystring.str)

;//拷貝

return

*this;}

// 過載 +

mystring mystring::

operator

+(mystring & mystring)

3、 main 方法呼叫
#include

"mystring.h"

void

main()

4、 執行結果

自定義string類

所需知識點 strcpy arg1,arg2 會把arg2的內容賦值給arg1,直到 0 為止,複製結束後會在arg1後加乙個 0 strlen 返回字串長度,只會返回 0 前字串的長度,如 123 0qweqr 返回值為3 std cin 遇到空格或回車符就結束輸入,遇到回車或eof會讀入 std...

c 自定義string類

1.標頭檔案部分 define crt secure no warnings pragma once include includeusing namespace std class mystring 2.函式定義部分 include mystring.h mystring mystring mys...

C 實現自定義string類

在一些c 筆試題裡,會有這樣一道題,那就是讓你自己實現乙個簡單的string類。自己在面試的時候就遇到過這個題。在這裡說一下自己是怎麼做的。主要包含一些基本的操作,建構函式 拷貝建構函式和析構函式。pragma once include using namespace std class mystr...