📄 bastring.h
字号:
size_type find (const charT* s, size_type pos = 0) const { return find (s, pos, traits::length (s)); } size_type find (charT c, size_type pos = 0) const; size_type rfind (const basic_string& str, size_type pos = npos) const { return rfind (str.data(), pos, str.length()); } size_type rfind (const charT* s, size_type pos, size_type n) const; size_type rfind (const charT* s, size_type pos = npos) const { return rfind (s, pos, traits::length (s)); } size_type rfind (charT c, size_type pos = npos) const; size_type find_first_of (const basic_string& str, size_type pos = 0) const { return find_first_of (str.data(), pos, str.length()); } size_type find_first_of (const charT* s, size_type pos, size_type n) const; size_type find_first_of (const charT* s, size_type pos = 0) const { return find_first_of (s, pos, traits::length (s)); } size_type find_first_of (charT c, size_type pos = 0) const { return find (c, pos); } size_type find_last_of (const basic_string& str, size_type pos = npos) const { return find_last_of (str.data(), pos, str.length()); } size_type find_last_of (const charT* s, size_type pos, size_type n) const; size_type find_last_of (const charT* s, size_type pos = npos) const { return find_last_of (s, pos, traits::length (s)); } size_type find_last_of (charT c, size_type pos = npos) const { return rfind (c, pos); } size_type find_first_not_of (const basic_string& str, size_type pos = 0) const { return find_first_not_of (str.data(), pos, str.length()); } size_type find_first_not_of (const charT* s, size_type pos, size_type n) const; size_type find_first_not_of (const charT* s, size_type pos = 0) const { return find_first_not_of (s, pos, traits::length (s)); } size_type find_first_not_of (charT c, size_type pos = 0) const; size_type find_last_not_of (const basic_string& str, size_type pos = npos) const { return find_last_not_of (str.data(), pos, str.length()); } size_type find_last_not_of (const charT* s, size_type pos, size_type n) const; size_type find_last_not_of (const charT* s, size_type pos = npos) const { return find_last_not_of (s, pos, traits::length (s)); } size_type find_last_not_of (charT c, size_type pos = npos) const; basic_string substr (size_type pos = 0, size_type n = npos) const { return basic_string (*this, pos, n); } int compare (const basic_string& str, size_type pos = 0, size_type n = npos) const; // There is no 'strncmp' equivalent for charT pointers. int compare (const charT* s, size_type pos, size_type n) const; int compare (const charT* s, size_type pos = 0) const { return compare (s, pos, traits::length (s)); } iterator begin () { selfish (); return &(*this)[0]; } iterator end () { selfish (); return &(*this)[length ()]; }private: iterator ibegin () const { return &(*rep ())[0]; } iterator iend () const { return &(*rep ())[length ()]; }public: const_iterator begin () const { return ibegin (); } const_iterator end () const { return iend (); } reverse_iterator rbegin() { return reverse_iterator (end ()); } const_reverse_iterator rbegin() const { return const_reverse_iterator (end ()); } reverse_iterator rend() { return reverse_iterator (begin ()); } const_reverse_iterator rend() const { return const_reverse_iterator (begin ()); }private: void alloc (size_type size, bool save); static size_type _find (const charT* ptr, charT c, size_type xpos, size_type len); inline bool check_realloc (size_type s) const; static Rep nilRep; charT *dat;};#ifdef __STL_MEMBER_TEMPLATEStemplate <class charT, class traits, class Allocator> template <class InputIterator>basic_string <charT, traits, Allocator>& basic_string <charT, traits, Allocator>::replace (iterator i1, iterator i2, InputIterator j1, InputIterator j2)#elsetemplate <class charT, class traits, class Allocator>basic_string <charT, traits, Allocator>& basic_string <charT, traits, Allocator>::replace (iterator i1, iterator i2, const_iterator j1, const_iterator j2)#endif{ const size_type len = length (); size_type pos = i1 - ibegin (); size_type n1 = i2 - i1; size_type n2 = j2 - j1; OUTOFRANGE (pos > len); if (n1 > len - pos) n1 = len - pos; LENGTHERROR (len - n1 > max_size () - n2); size_t newlen = len - n1 + n2; if (check_realloc (newlen)) { Rep *p = Rep::create (newlen); p->copy (0, data (), pos); p->copy (pos + n2, data () + pos + n1, len - (pos + n1)); for (; j1 != j2; ++j1, ++pos) traits::assign ((*p)[pos], *j1); repup (p); } else { rep ()->move (pos + n2, data () + pos + n1, len - (pos + n1)); for (; j1 != j2; ++j1, ++pos) traits::assign ((*rep ())[pos], *j1); } rep ()->len = newlen; return *this;}template <class charT, class traits, class Allocator>inline basic_string <charT, traits, Allocator>operator+ (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ basic_string <charT, traits, Allocator> str (lhs); str.append (rhs); return str;}template <class charT, class traits, class Allocator>inline basic_string <charT, traits, Allocator>operator+ (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ basic_string <charT, traits, Allocator> str (lhs); str.append (rhs); return str;}template <class charT, class traits, class Allocator>inline basic_string <charT, traits, Allocator>operator+ (charT lhs, const basic_string <charT, traits, Allocator>& rhs){ basic_string <charT, traits, Allocator> str (1, lhs); str.append (rhs); return str;}template <class charT, class traits, class Allocator>inline basic_string <charT, traits, Allocator>operator+ (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ basic_string <charT, traits, Allocator> str (lhs); str.append (rhs); return str;}template <class charT, class traits, class Allocator>inline basic_string <charT, traits, Allocator>operator+ (const basic_string <charT, traits, Allocator>& lhs, charT rhs){ basic_string <charT, traits, Allocator> str (lhs); str.append (1, rhs); return str;}template <class charT, class traits, class Allocator>inline booloperator== (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ return (lhs.compare (rhs) == 0);}template <class charT, class traits, class Allocator>inline booloperator== (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ return (rhs.compare (lhs) == 0);}template <class charT, class traits, class Allocator>inline booloperator== (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ return (lhs.compare (rhs) == 0);}template <class charT, class traits, class Allocator>inline booloperator!= (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ return (rhs.compare (lhs) != 0);}template <class charT, class traits, class Allocator>inline booloperator!= (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ return (lhs.compare (rhs) != 0);}template <class charT, class traits, class Allocator>inline booloperator< (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ return (lhs.compare (rhs) < 0);}template <class charT, class traits, class Allocator>inline booloperator< (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ return (rhs.compare (lhs) > 0);}template <class charT, class traits, class Allocator>inline booloperator< (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ return (lhs.compare (rhs) < 0);}template <class charT, class traits, class Allocator>inline booloperator> (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ return (rhs.compare (lhs) < 0);}template <class charT, class traits, class Allocator>inline booloperator> (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ return (lhs.compare (rhs) > 0);}template <class charT, class traits, class Allocator>inline booloperator<= (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ return (rhs.compare (lhs) >= 0);}template <class charT, class traits, class Allocator>inline booloperator<= (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ return (lhs.compare (rhs) <= 0);}template <class charT, class traits, class Allocator>inline booloperator>= (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs){ return (rhs.compare (lhs) <= 0);}template <class charT, class traits, class Allocator>inline booloperator>= (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs){ return (lhs.compare (rhs) >= 0);}template <class charT, class traits, class Allocator>inline booloperator!= (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ return (lhs.compare (rhs) != 0);}template <class charT, class traits, class Allocator>inline booloperator> (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ return (lhs.compare (rhs) > 0);}template <class charT, class traits, class Allocator>inline booloperator<= (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ return (lhs.compare (rhs) <= 0);}template <class charT, class traits, class Allocator>inline booloperator>= (const basic_string <charT, traits, Allocator>& lhs, const basic_string <charT, traits, Allocator>& rhs){ return (lhs.compare (rhs) >= 0);}class istream; class ostream;template <class charT, class traits, class Allocator> istream&operator>> (istream&, basic_string <charT, traits, Allocator>&);template <class charT, class traits, class Allocator> ostream&operator<< (ostream&, const basic_string <charT, traits, Allocator>&);template <class charT, class traits, class Allocator> istream&getline (istream&, basic_string <charT, traits, Allocator>&, charT delim = '\n');} // extern "C++"#include <std/bastring.cc>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -