前面部落格 stlstring類相關介面介紹 中對string的介面進行了詳細的介紹和測試,下面我們將對這些介面進行模擬實現,若有疑問可參考前面的部落格。標頭檔案string.h
#pragma once
#include #include #include #include using namespace std;
namespace cxy
iterator end()
public:
//string();//無參建構函式
//string(const char* str);//帶參建構函式
string(const char* str = "");//帶預設引數的建構函式
string(const string& str);//拷貝建構函式
string& operator=(const string& str);//過載賦值運算子
~string();//析構函式
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);
void swap(string& str);
const char* c_str() const;
char& operator(size_t pos);
size_t size();
size_t capacity();
void reserve(size_t n);
void pushback(char ch);
string& operator+=(char ch);
string& operator+=(const char* str);
void insert(size_t pos, char ch);
void insert(size_t pos, const char* str);
void erase(size_t pos, size_t len);
size_t find(char ch, size_t pos = 0);
size_t find(const char* str, size_t pos = 0);
private:
char* _str;
size_t _size;
size_t _capacity;
static size_t npos;
}; size_t string::npos = -1;
void teststring()
}
成員函式實現檔案 string.cpp
#define _crt_secure_no_warnings
#include "string.h"
using namespace std;
using namespace cxy;
//string::string()
//:_str(new char[1])
////帶參建構函式
//string::string(const char* str)
//:_str(new char[strlen(str)+1])
////帶預設引數的建構函式
string::string(const char* str)
string::~string()//析構函式
}void string::swap(string& str)
//拷貝建構函式傳統寫法
//string::string(const string& str)
//:_str(new char[str._capacity+1])
//, _size(str._size)
//, _capacity(str._capacity)
////拷貝建構函式現**法
// copy(s1)
string::string(const string& str)
:_str(nullptr)
, _size(0)
, _capacity(0)
bool string::operator<(const string& s)
bool string::operator==(const string& s)
bool string::operator>(const string& s)
bool string::operator<=(const string& s)
bool string::operator>=(const string& s)
//過載訪問運算子
char& string::operator(size_t pos)
//求字串長度
size_t string::size()
//求字串空間大小
size_t string::capacity()
//為字串預留空間
void string::reserve(size_t newcapacity) }
//在字串後追加乙個字元
void string::pushback(char ch)
//在字串後追加乙個字串
// "hello" "************************xx"
const char* string::c_str() const
//過載運算子+=
string& string::operator+=(char ch)
string& string::operator+=(const char* str)
//在指定位置pos處插入字元ch
void string::insert(size_t pos, char ch)
_str[pos] = ch;
++_size;
}//在指定位置pos處插入字串str
void string::insert(size_t pos, const char* str)
for (size_t i = 0; i < gap; ++i)
_size += gap;
}//在指定位置pos處刪除長度為len的字串
void string::erase(size_t pos, size_t len)
_size -= len;
}//在字串中尋找乙個字元ch,返回該字元的下標
size_t string::find(char ch, size_t pos)
return npos;
}size_t string::find(const char* str, size_t pos)
if (i == len)
return index;
} return npos;
}int main()
STL string容器使用及模擬實現
一.string介紹。string類 string是表示字串的字串類。該類的介面與常規容器的介面基本相同,再新增了一些專門用來操作string的常規操作。string在底層實際是 basic string模板類的別名,typedef basic string string 不能操作多位元組或者變長字...
模擬實現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...
C 模擬實現日期類
本篇部落格完善了日期類 實現了以下操作 class date 實現 class date 也可以不用給 date const date d year d.year month d.month day d.day 當前日期days天後是什麼日期?date operator int days dayso...