在學習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...