📄 string.h
字号:
int operator<=(const SubString& x, const SubString& y);int operator==(const SubString& x, const char* t);int operator!=(const SubString& x, const char* t);int operator> (const SubString& x, const char* t);int operator>=(const SubString& x, const char* t);int operator< (const SubString& x, const char* t);int operator<=(const SubString& x, const char* t);// status reports, needed before defining other thingsinline unsigned int String::length() const { return rep->len; }inline int String::empty() const { return rep->len == 0; }inline const char* String::chars() const { return &(rep->s[0]); }inline int String::allocation() const { return rep->sz; }inline void String::alloc(int newsize) { rep = Sresize(rep, newsize); }inline unsigned int SubString::length() const { return len; }inline int SubString::empty() const { return len == 0; }inline const char* SubString::chars() const { return &(S.rep->s[pos]); }// constructorsinline String::String() : rep(&_nilStrRep) {}inline String::String(const String& x) : rep(Scopy(0, x.rep)) {}inline String::String(const char* t) : rep(Salloc(0, t, -1, -1)) {}inline String::String(const char* t, int tlen) : rep(Salloc(0, t, tlen, tlen)) {}inline String::String(const SubString& y) : rep(Salloc(0, y.chars(), y.length(), y.length())) {}inline String::String(char c) : rep(Salloc(0, &c, 1, 1)) {}inline String::~String() { if (rep != &_nilStrRep) delete rep; }inline SubString::SubString(const SubString& x) :S(x.S), pos(x.pos), len(x.len) {}inline SubString::SubString(String& x, int first, int l) :S(x), pos(first), len(l) {}inline SubString::~SubString() {}// assignmentinline void String::operator = (const String& y){ rep = Scopy(rep, y.rep);}inline void String::operator=(const char* t){ rep = Salloc(rep, t, -1, -1); }inline void String::operator=(const SubString& y){ rep = Salloc(rep, y.chars(), y.length(), y.length());}inline void String::operator=(char c){ rep = Salloc(rep, &c, 1, 1); }inline void SubString::operator = (const char* ys){ assign(0, ys);}inline void SubString::operator = (char ch){ assign(0, &ch, 1);}inline void SubString::operator = (const String& y){ assign(y.rep, y.chars(), y.length());}inline void SubString::operator = (const SubString& y){ assign(y.S.rep, y.chars(), y.length());}// Zillions of cats...inline void cat(const String& x, const String& y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const String& x, const SubString& y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const String& x, const char* y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), y, -1);}inline void cat(const String& x, char y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), &y, 1);}inline void cat(const SubString& x, const String& y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const SubString& x, const SubString& y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const SubString& x, const char* y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), y, -1);}inline void cat(const SubString& x, char y, String& r){ r.rep = Scat(r.rep, x.chars(), x.length(), &y, 1);}inline void cat(const char* x, const String& y, String& r){ r.rep = Scat(r.rep, x, -1, y.chars(), y.length());}inline void cat(const char* x, const SubString& y, String& r){ r.rep = Scat(r.rep, x, -1, y.chars(), y.length());}inline void cat(const char* x, const char* y, String& r){ r.rep = Scat(r.rep, x, -1, y, -1);}inline void cat(const char* x, char y, String& r){ r.rep = Scat(r.rep, x, -1, &y, 1);}inline void cat(const String& a, const String& x, const String& y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), y.chars(), y.length());}inline void cat(const String& a, const String& x, const SubString& y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), y.chars(), y.length());}inline void cat(const String& a, const String& x, const char* y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), y, -1);}inline void cat(const String& a, const String& x, char y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), &y, 1);}inline void cat(const String& a, const SubString& x, const String& y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), y.chars(), y.length());}inline void cat(const String& a, const SubString& x, const SubString& y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), y.chars(), y.length());}inline void cat(const String& a, const SubString& x, const char* y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), y, -1);}inline void cat(const String& a, const SubString& x, char y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x.chars(), x.length(), &y, 1);}inline void cat(const String& a, const char* x, const String& y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x, -1, y.chars(), y.length());}inline void cat(const String& a, const char* x, const SubString& y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x, -1, y.chars(), y.length());}inline void cat(const String& a, const char* x, const char* y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x, -1, y, -1);}inline void cat(const String& a, const char* x, char y, String& r){ r.rep = Scat(r.rep, a.chars(), a.length(), x, -1, &y, 1);}inline void cat(const char* a, const String& x, const String& y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const char* a, const String& x, const SubString& y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const char* a, const String& x, const char* y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), y, -1);}inline void cat(const char* a, const String& x, char y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), &y, 1);}inline void cat(const char* a, const SubString& x, const String& y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const char* a, const SubString& x, const SubString& y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), y.chars(), y.length());}inline void cat(const char* a, const SubString& x, const char* y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), y, -1);}inline void cat(const char* a, const SubString& x, char y, String& r){ r.rep = Scat(r.rep, a, -1, x.chars(), x.length(), &y, 1);}inline void cat(const char* a, const char* x, const String& y, String& r){ r.rep = Scat(r.rep, a, -1, x, -1, y.chars(), y.length());}inline void cat(const char* a, const char* x, const SubString& y, String& r){ r.rep = Scat(r.rep, a, -1, x, -1, y.chars(), y.length());}inline void cat(const char* a, const char* x, const char* y, String& r){ r.rep = Scat(r.rep, a, -1, x, -1, y, -1);}inline void cat(const char* a, const char* x, char y, String& r){ r.rep = Scat(r.rep, a, -1, x, -1, &y, 1);}// operator versionsinline void String::operator +=(const String& y){ cat(*this, y, *this);}inline void String::operator +=(const SubString& y){ cat(*this, y, *this);}inline void String::operator += (const char* y){ cat(*this, y, *this);}inline void String:: operator +=(char y){ cat(*this, y, *this);}// constructive concatenation#if defined(__GNUG__) && !defined(NO_NRV)inline String operator + (const String& x, const String& y) return r;{ cat(x, y, r);}inline String operator + (const String& x, const SubString& y) return r;{ cat(x, y, r);}inline String operator + (const String& x, const char* y) return r;{ cat(x, y, r);}inline String operator + (const String& x, char y) return r;{ cat(x, y, r);}inline String operator + (const SubString& x, const String& y) return r;{ cat(x, y, r);}inline String operator + (const SubString& x, const SubString& y) return r;{ cat(x, y, r);}inline String operator + (const SubString& x, const char* y) return r;{ cat(x, y, r);}inline String operator + (const SubString& x, char y) return r;{ cat(x, y, r);}inline String operator + (const char* x, const String& y) return r;{ cat(x, y, r);}inline String operator + (const char* x, const SubString& y) return r;{ cat(x, y, r);}inline String reverse(const String& x) return r;{ r.rep = Sreverse(x.rep, r.rep);}inline String upcase(const String& x) return r;{ r.rep = Supcase(x.rep, r.rep);}inline String downcase(const String& x) return r;{ r.rep = Sdowncase(x.rep, r.rep);}inline String capitalize(const String& x) return r;{ r.rep = Scapitalize(x.rep, r.rep);}#else /* NO_NRV */inline String operator + (const String& x, const String& y){ String r; cat(x, y, r); return r;}inline String operator + (const String& x, const SubString& y) { String r; cat(x, y, r); return r;}inline String operator + (const String& x, const char* y) { String r; cat(x, y, r); return r;}inline String operator + (const String& x, char y) { String r; cat(x, y, r); return r;}inline String operator + (const SubString& x, const String& y) { String r; cat(x, y, r); return r;}inline String operator + (const SubString& x, const SubString& y) { String r; cat(x, y, r); return r;}inline String operator + (const SubString& x, const char* y) { String r; cat(x, y, r); return r;}inline String operator + (const SubString& x, char y) { String r; cat(x, y, r); return r;}inline String operator + (const char* x, const String& y) { String r; cat(x, y, r); return r;}inline String operator + (const char* x, const SubString& y) { String r; cat(x, y, r); return r;}inline String reverse(const String& x) { String r; r.rep = Sreverse(x.rep, r.rep); return r;}inline String upcase(const String& x) { String r; r.rep = Supcase(x.rep, r.rep); return r;}inline String downcase(const String& x) { String r; r.rep = Sdowncase(x.rep, r.rep); return r;}inline String capitalize(const String& x) { String r; r.rep = Scapitalize(x.rep, r.rep); return r;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -