稍微對String類的一點改進

2021-06-02 07:42:53 字數 2461 閱讀 4125

#ifndef _string_h_h

#define _string_h_h

#include using namespace std;

class string;

ostream& operator << (ostream &os,const string &str);

istream& operator >> (istream &in,string &str);

string operator + (const string &sorig,const string sdest);

class string

string(const char *p);

string(const string &orig);

string& operator = (const string &orig);

~string();

friend ostream& operator << (ostream &os,const string &str);

friend istream& operator >> (istream &in,string &str);

friend string operator + (const string &sorig,

const string sdest);

char operator (size_t index)const;

bool operator == (const string &orig);

bool operator != (const string &orig);

const string& insert(const string &orig,size_t index);

const string& erase(size_t headindex,size_t backindex);

bool empty();

size_t size()const;

private:

ostream& print(ostream &os)const;

istream& putin(istream &in);

void split(char *pt,char*ptback,

size_t headindex,size_t backindex = 0);

void del_ptr() }

char *pc;

};#endif

#include "string.h"

#include #include using namespace std;

/**member function implementations**/

string::string(const char *p)

string::string(const string &orig)

string& string::operator = (const string &orig)

string::~string()

char string::operator (size_t index)const

bool string::operator == (const string & orig)

ostream& string::print(ostream &os)const

istream& string::putin(istream &in)

bool string::operator != (const string &orig)

const string& string::insert(const string &orig,size_t index)

const string& string::erase(size_t headindex,size_t backindex)

bool string::empty()

size_t string::size()const

void string::split(char *pthead,char *ptback,

size_t headindex,size_t backindex)

else//split for earse }

/**friend function**/

ostream& operator << (ostream &os,const string &str)

istream& operator >> (istream &in,string &str)

string operator + (const string &sorig,const string sdest)

#include "string.h"

#include using namespace std;

/**切忌不要返回臨時變數的引用**/

int main()

對Reflection的一點改進

之前實現的那個reflection沒有把光照加進去,使得不是很逼真,與真實的景象有出入。只要我們把光源也想象 為乙個物體,在鏡子中也會有映象,也會使virtual object產生光照效果。這裡我採用的是聚光燈,對其的屬性設定如下 glfloat lightamb ambient light glf...

對String類的split方法的一點點研究

今天在複習正規表示式的時候,遇到了乙個小問題,話不多說,先貼上 當我在用string類的split 方法對str1進行分割的時候,然後在控制台輸出,輸出結果如下 意思就是 123a345b 呼叫split方法後返回的string陣列中有7個元素,並且當中含有五個空元素,a元素之前拆出了3個空元素,而...

對Abstract類的一點理解

abstractlist a new abstractlist override public int size 快看,這不是已經new出來了嗎,只不過格式和普通的new有點差別,換一種說法 抽象類是可以new的,但是不能直接new,一定要重寫沒有實現的方法 比如說這裡邊有兩個方法需要overrid...