具體關於string函式寫時注意,看注釋哦
#include
#include
using
namespace
std;
class string
// s1.swap(s2);兩個物件內容交換
void swap(string& s)
// string s2(s1) ;拷貝建構函式
string(const string& s)
:_str(null),
_size(strlen(s._str)),
_capacity(strlen(s._str))
// s1 = s2 ;賦值運算子過載
string& operator=(string s)
~string()
const
char* c_str()
//擴容
void expand(size_t n)
//後面新增資料
void pushback(char ch)
_str[_size++] = ch;
_str[_size] = '\0';
}void pushback(const
char* str)
strcpy((_str + _size), str);
_size += strlen(str);
}//string 進行的是開空間,但是是不會pop的時候,減空間
void popback()
//中間插入,我利用的是memmove庫函式,來完成佔位的後移
void insert(size_t pos, char ch)
assert(pos >= 0 && pos <= _size);
memmove(_str + pos+1, _str + pos,_size - pos+1);
_str[pos] = ch;
_size++;
}void insert(size_t pos, const
char* str)
assert(pos >= 0 && pos <= _size);
memmove(_str + pos + strlen(str), _str + pos,_size - pos+1);
strncpy(_str + pos, str, strlen(str));
_size += strlen(str);
}//pos位置的刪除,我同意利用的庫函式,實現前移,然後修改size大小
void erase(size_t pos, size_t n = 1)
//查詢
size_t find(char ch)
return -1;
}// s1 + 'a' ;+運算子過載+是很浪費空間的,因為在傳回時只能傳值傳回,而+=可以傳引用
string operator+(char ch)
//+=運算子過載
string& operator+=(char ch)
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)
//輸出運算子因為stream需要占用第乙個引數,所以不可以寫成成員變數,但是又要訪問類中私有成員,所以應設為friend友元。
friend ostream& operator
<<(ostream& cout, const string&s);
private:
char* _str;
size_t _size;
size_t _capacity;
};ostream & operator
<<(ostream &cout, const string&s)
模擬實現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類(C )
以下就是string類的模擬實現 測試環境為vs2013 define crt secure no warnings 1 include include include using namespace std class string 拷貝建構函式 string const string s str...
string的模擬實現 String
三 運算子過載 四 迭代器 五 其他操作 在實現string類之前,我們需要知道string是表示字串的字串類 string類的成員變數如下 庫中存在string類,所以命名為string會造成衝突,所以我們定義乙個string類去實現string類的各種功能 class string string...