2 #ifndef STRING_H_INCLUDED 3 #define STRING_H_INCLUDED 35 #if defined (_MSC_VER) && _MSC_VER > 1000 37 # pragma warning (disable : 4786) 67 typedef std::basic_string<charT> string_type;
84 return code.getCode();
86 bool operator== (
const std::basic_string<char> &other)
const override {
89 bool operator!= (
const std::basic_string<char> &other)
const {
90 return !(imp == other);
101 typedef string_type::iterator
iterator;
114 iterator (
const iterator& other) : iterImp (other.iterImp) {}
116 iterator (
const string_type::iterator& other) : iterImp (other) {}
126 iterator
operator+ (difference_type n)
const {
return (iterImp + n); }
127 iterator&
operator+= (difference_type n) { iterImp += n;
return *
this; }
128 iterator
operator- (difference_type n)
const {
return (iterImp - n); }
129 iterator&
operator-= (difference_type n) { iterImp -= n;
return *
this; }
130 difference_type
operator- (
const iterator& other)
const {
return (iterImp - other.iterImp); }
131 reference
operator[] (difference_type n)
const {
return iterImp[n]; }
133 friend bool operator== (
const iterator& lhs,
const iterator& rhs) {
134 return lhs.iterImp == rhs.iterImp;
136 friend bool operator!= (
const iterator& lhs,
const iterator& rhs) {
137 return lhs.iterImp != rhs.iterImp;
139 friend bool operator< (
const iterator& lhs,
const iterator& rhs) {
140 return lhs.iterImp < rhs.iterImp;
142 friend bool operator> (
const iterator& lhs,
const iterator& rhs) {
143 return lhs.iterImp > rhs.iterImp;
145 friend bool operator<= (
const iterator& lhs,
const iterator& rhs) {
146 return lhs.iterImp <= rhs.iterImp;
148 friend bool operator>= (
const iterator& lhs,
const iterator& rhs) {
149 return lhs.iterImp >= rhs.iterImp;
153 friend struct const_iterator;
154 string_type::iterator iterImp;
157 struct const_iterator {
168 const_iterator (
const string_type::const_iterator& other) : iterImp (other) {};
174 const_iterator
operator++(
int){
return (const_iterator)iterImp++; }
176 const_iterator
operator--(
int){
return (const_iterator)iterImp--; }
178 const_iterator
operator+ (difference_type n)
const {
return (iterImp + n); }
179 const_iterator&
operator+= (difference_type n) { iterImp += n;
return *
this; }
180 const_iterator
operator- (difference_type n)
const {
return (iterImp - n); }
181 const_iterator&
operator-= (difference_type n) { iterImp -= n;
return *
this; }
182 difference_type
operator- (
const const_iterator& other)
const {
return (iterImp - other.iterImp); }
183 reference
operator[] (difference_type n)
const {
return iterImp[n]; }
185 friend bool operator== (
const const_iterator& lhs,
const const_iterator& rhs) {
186 return lhs.iterImp == rhs.iterImp;
188 friend bool operator!= (
const const_iterator& lhs,
const const_iterator& rhs) {
189 return lhs.iterImp != rhs.iterImp;
191 friend bool operator< (
const const_iterator& lhs,
const const_iterator& rhs) {
192 return lhs.iterImp < rhs.iterImp;
194 friend bool operator> (
const const_iterator& lhs,
const const_iterator& rhs) {
195 return lhs.iterImp > rhs.iterImp;
197 friend bool operator<= (
const const_iterator& lhs,
const const_iterator& rhs) {
198 return lhs.iterImp <= rhs.iterImp;
200 friend bool operator>= (
const const_iterator& lhs,
const const_iterator& rhs) {
201 return lhs.iterImp >= rhs.iterImp;
205 string_type::const_iterator iterImp;
219 String (
const string_type&
str, size_type pos = 0, size_type n =
npos) : imp (str, pos, n) {};
220 String (
const charT* s, size_type n) : imp (s, n) { assert (s); }
221 String (
const charT* s) : imp (s) { assert (s); }
222 String (size_type n, charT c) : imp (n, c) {};
223 template<
class InputIterator>
224 String (InputIterator first, InputIterator
last) : imp (first, last) {}
236 iterator
begin() {
return imp.begin(); }
237 const_iterator
begin()
const {
return imp.begin(); }
238 iterator
end() {
return imp.end(); }
239 const_iterator
end()
const {
return imp.end(); }
240 reverse_iterator
rbegin() {
return imp.rbegin(); }
241 const_reverse_iterator
rbegin()
const {
return imp.rbegin(); }
242 reverse_iterator
rend() {
return imp.rend(); }
243 const_reverse_iterator
rend()
const {
return imp.rend(); }
246 size_type
size()
const {
return imp.size(); }
247 size_type
length()
const {
return imp.length(); }
248 size_type
max_size()
const {
return imp.max_size(); }
249 void resize (size_type n, charT c) { imp.resize (n, c); }
250 void resize (size_type n) { imp.resize (n); }
251 size_type
capacity()
const {
return imp.capacity(); }
252 void reserve (size_type n = 0) { imp.reserve (n); }
254 bool empty()
const {
return imp.empty(); }
258 const_reference
operator[] (size_type pos)
const {
return imp[pos]; }
259 reference
at (size_type n) {
return imp.at(n); }
260 const_reference
at (size_type n)
const {
return imp.at(n); }
269 String&
append (
const charT* s, size_type n) { assert(s); imp.append (s, n);
return *
this; }
270 String&
append (
const charT* s) { assert(s); imp.append (s);
return *
this; }
272 template<
class InputIterator>
278 { imp.
assign(str.imp, pos, n);
return *
this; }
279 String&
assign (
const charT* s, size_type n) { assert(s); imp.assign (s, n);
return *
this; }
280 String&
assign (
const charT* s) { assert(s); imp.assign (s);
return *
this; }
282 template<
class InputIterator>
284 { imp.
assign(first, last);
return *
this; }
287 { imp.
insert(pos1, str.imp);
return *
this; }
289 { imp.
insert(pos1, str.imp, pos2, n);
return *
this; }
291 { assert(s); imp.insert(pos, s, n);
return *
this; }
293 { assert(s); imp.insert(pos, s);
return *
this; }
295 { imp.
insert(pos, n, c);
return *
this; }
297 {
return imp.insert(base_iter (p), c); }
298 void insert (iterator p, size_type n, charT c)
299 { imp.insert(base_iter (p), n, c); }
300 template<
class InputIterator>
301 void insert (iterator p, InputIterator first, InputIterator
last)
302 { imp.insert(base_iter (p), first, last); }
305 { imp.
erase(pos, n);
return *
this; }
307 {
return imp.erase(base_iter(position)); }
309 {
return imp.erase(base_iter(first), base_iter(last)); }
311 { imp.
replace(pos1, n1, str.imp);
return *
this; }
313 { imp.
replace(pos1, n1, str.imp, pos2, n2);
return *
this; }
315 { assert(s); imp.replace(pos, n1, s, n2);
return *
this; }
317 { assert (s); imp.replace(pos, n1, s);
return *
this; }
319 { imp.
replace(pos, n1, n2, c);
return *
this; }
321 { imp.
replace(base_iter (i1), base_iter(i2), str.imp);
return *
this; }
323 { assert(s); imp.replace(base_iter(i1), base_iter(i2), s, n);
return *
this; }
325 { assert(s); imp.replace(base_iter(i1), base_iter(i2), s);
return *
this; }
327 { imp.
replace(base_iter(i1), base_iter(i2), n, c);
return *
this; }
328 template<
class InputIterator>
329 String&
replace (iterator& i1, iterator& i2,InputIterator j1, InputIterator j2)
330 { imp.
replace(base_iter(i1), base_iter(i2), j1, j2);
return *
this; }
331 size_type
copy (charT* s, size_type n, size_type pos = 0)
const 332 { assert(s);
return imp.copy(s, n, pos); }
339 void swap (string_type&
str) { imp.swap (str); }
340 friend inline void swap (
String& lhs, string_type& rhs) { lhs.imp.swap(rhs); }
341 friend inline void swap (string_type& lhs,
String& rhs) { lhs.swap(rhs.imp); }
344 const charT*
c_str()
const {
return imp.c_str(); }
345 const charT*
data()
const {
return imp.data(); }
350 {
return imp.find(str.imp, pos); }
351 size_type
find (
const charT* s, size_type pos, size_type n)
const 352 { assert(s);
return imp.find(s, pos, n); }
353 size_type
find (
const charT* s, size_type pos = 0)
const 354 { assert(s);
return imp.find(s, pos); }
355 size_type
find (charT c, size_type pos = 0)
const 356 {
return imp.find(c, pos); }
358 {
return imp.rfind(str.imp, pos); }
359 size_type
rfind (
const charT* s, size_type pos, size_type n)
const 360 { assert(s);
return imp.rfind(s, pos, n); }
361 size_type
rfind (
const charT* s, size_type pos =
npos)
const 362 { assert(s);
return imp.rfind(s, pos); }
364 {
return imp.rfind(c, pos); }
367 {
return imp.find_first_of(str.imp, pos); }
369 { assert(s);
return imp.find_first_of(s, pos, n); }
371 { assert (s);
return imp.find_first_of(s, pos); }
373 {
return imp.find_first_of(c, pos); }
376 {
return imp.find_last_of(str.imp, pos); }
377 size_type
find_last_of (
const charT* s, size_type pos, size_type n)
const 378 { assert(s);
return imp.find_last_of(s, pos, n); }
380 { assert(s);
return imp.find_last_of(s, pos); }
382 {
return imp.find_last_of(c, pos); }
385 {
return imp.find_first_not_of(str.imp, pos); }
387 { assert(s);
return imp.find_first_not_of(s, pos, n); }
389 { assert(s);
return imp.find_first_not_of(s, pos); }
391 {
return imp.find_first_not_of(c, pos); }
394 {
return imp.find_last_not_of(str.imp, pos); }
396 { assert(s);
return imp.find_last_not_of(s, pos, n); }
398 { assert(s);
return imp.find_last_not_of(s, pos); }
400 {
return imp.find_last_not_of(c, pos); }
422 auto wsfront=find_if_not(imp.begin(),imp.end(),[](
int c) {
return isspace(c);});
423 auto wsback=find_if_not(imp.rbegin(),imp.rend(),[](
int c) {
return isspace(c);}).base();
424 return (wsback <= wsfront ?
String() :
String(wsfront, wsback));
428 auto wsfront=find_if_not(imp.begin(),imp.end(),[](
int c) {
return isspace(c);});
429 auto wsback=find_if_not(imp.rbegin(),imp.rend(),[](
int c) {
return isspace(c);}).base();
430 return (wsback <= wsfront ?
new String() :
new String(wsfront, wsback));
434 imp.
erase(imp.begin(), find_if(imp.begin(),imp.end(),[](
int c) {
437 imp.
erase(find_if(imp.rbegin(),imp.rend(),[](
int c) {
439 }).base(), imp.end());
457 str2->append(1,
uToL[i]);
464 for (
unsigned long i = 0, len = imp.length(); i < len; ++i)
465 imp.replace(i, 1, 1,
uToL[imp[i]]);
483 str2->append(1,
lToU[i]);
490 for (
unsigned long i = 0, len = imp.length(); i < len; ++i)
491 imp.replace(i, 1, 1,
lToU[imp[i]]);
497 size_type rlen = n <
size()-pos ? n :
size()-pos;
500 throw std::out_of_range(
"String::substr");
504 std::vector<std::string>
split (
char delim)
const {
505 std::stringstream ss(imp);
507 std::vector<std::string> splittedString;
508 while (
getline(ss, item, delim)) {
509 splittedString.push_back(item);
511 return splittedString;
514 std::vector<std::string>
split (
const string_type& delim)
const {
515 std::vector<std::string> splittedString;
516 size_type startIndex = 0;
517 size_type endIndex = 0;
518 while ( (endIndex = imp.find(delim, startIndex)) < imp.size() ) {
519 std::string val = imp.substr(startIndex, endIndex - startIndex);
520 splittedString.push_back(val);
521 startIndex = endIndex + delim.size();
523 if (startIndex < imp.size()) {
524 std::string val = imp.substr(startIndex);
525 splittedString.push_back(val);
527 return splittedString;
531 {
return imp.compare(str.imp); }
533 {
return imp.compare(pos1, n1, str.imp); }
534 int compare (size_type pos1, size_type n1,
const String&
str, size_type pos2, size_type n2)
const 535 {
return imp.compare(pos1, n1, str.imp, pos2, n2); }
537 { assert(s);
return imp.compare(s); }
538 int compare (size_type pos1, size_type n1,
const charT* s, size_type n2 =
npos)
const 539 { assert(s);
return imp.compare(pos1, n1, s, n2); }
542 return String (lhs, rhs,
false);
562 return lhs == rhs.imp;
566 return lhs.imp == rhs;
571 return lhs.imp < rhs;
575 return lhs < rhs.imp;
580 return lhs == rhs.imp;
584 return lhs.imp == rhs;
589 return lhs.imp < rhs;
593 return lhs < rhs.imp;
610 friend inline bool operator!= (
const charT* lhs,
const String& rhs) {
return !(lhs == rhs); }
611 friend inline bool operator!= (
const String& lhs,
const charT* rhs) {
return !(lhs == rhs); }
613 friend inline bool operator> (
const String& lhs,
const charT* rhs) {
return rhs < lhs; }
614 friend inline bool operator> (
const charT* lhs,
const String& rhs) {
return rhs < lhs; }
616 friend inline bool operator<= (
const String& lhs,
const charT* rhs) {
return !(rhs < lhs); }
617 friend inline bool operator<= (
const charT* lhs,
const String& rhs) {
return !(rhs < lhs); }
619 friend inline bool operator>= (
const String& lhs,
const charT* rhs) {
return !(lhs < rhs); }
620 friend inline bool operator>= (
const charT* lhs,
const String& rhs) {
return !(lhs < rhs); }
622 friend inline std::basic_ostream<charT, string_type::traits_type>&
623 operator<< (std::basic_ostream<charT, string_type::traits_type>& os,
const String&
str) {
624 return os <<
str.imp;
627 friend inline std::basic_istream <charT, string_type::traits_type>&
633 friend inline std::basic_istream<charT, string_type::traits_type>&
634 getline(std::basic_istream<charT, string_type::traits_type>& is,
String&
str, charT delim) {
635 std::getline(is, str.imp, delim);
639 friend inline std::basic_istream<charT, string_type::traits_type>&
641 return getline(is, str.imp, is.widen(
'\n'));
650 imp.append(lhs.imp).append (rhs.imp);
654 size_type lhsLen = std::char_traits<charT>::length (lhs);
655 imp.reserve(lhsLen + rhs.
length());
656 imp.append(lhs, lhsLen).append (rhs.imp);
659 imp.reserve(1 + rhs.
length());
660 imp.append(1, lhs).append (rhs.imp);
664 size_type rhsLen = std::char_traits<charT>::length (rhs);
665 imp.reserve(lhs.
length() + rhsLen);
666 imp.append(lhs.imp).append (rhs, rhsLen);
669 imp.reserve(lhs.
length() + 1);
670 imp.append(lhs.imp).append (1, rhs);
673 string_type::iterator base_iter (iterator iter) {
674 #if 0 // for basic_string<...>::iterator 676 #else // for new lstring::iterator 686 # if defined (_WIN32) && defined (_UNICODE) 694 #endif // STRING_H_INCLUDED iterator erase(iterator first, iterator last)
Definition: String.h:308
size_type find_first_of(const String &str, size_type pos=0) const
Definition: String.h:366
const_iterator end() const
Definition: String.h:239
string_type::reverse_iterator reverse_iterator
Definition: String.h:211
String * toupper_copy() const
Definition: String.h:478
size_type find_last_not_of(const String &str, size_type pos=npos) const
Definition: String.h:393
Definition: IHashable.h:10
size_type find_last_of(charT c, size_type pos=npos) const
Definition: String.h:381
String * copy() override
Definition: String.h:93
void insert(iterator p, size_type n, charT c)
Definition: String.h:298
friend void swap(String &lhs, String &rhs)
Definition: String.h:336
String & append(const charT *s, size_type n)
Definition: String.h:269
void clear()
Definition: String.h:253
friend bool operator>=(const iterator &lhs, const iterator &rhs)
Definition: String.h:148
friend bool operator==(const iterator &lhs, const iterator &rhs)
Definition: String.h:133
size_type rfind(const charT *s, size_type pos, size_type n) const
Definition: String.h:359
reference operator*() const
Definition: String.h:118
string_type::value_type value_type
Definition: String.h:159
int compare(const charT *s) const
Definition: String.h:536
string_type::pointer pointer
Definition: String.h:110
char lToU[256]
Definition: Utils.cpp:12
size_type find(const String &str, size_type pos=0) const
Definition: String.h:349
friend std::basic_istream< charT, string_type::traits_type > & operator>>(std::basic_istream< charT, string_type::traits_type > &is, String &str)
Definition: String.h:628
Definition: HashCoder.h:41
size_type find_last_not_of(charT c, size_type pos=npos) const
Definition: String.h:399
const_iterator operator++(int)
Definition: String.h:174
String & insert(size_type pos1, const String &str, size_type pos2, size_type n)
Definition: String.h:288
string_type::value_type value_type
Definition: String.h:72
iterator erase(iterator position)
Definition: String.h:306
iterator operator-(difference_type n) const
Definition: String.h:128
String & replace(size_type pos1, size_type n1, const String &str)
Definition: String.h:310
reference at(size_type n)
Definition: String.h:259
size_type find_first_not_of(charT c, size_type pos=0) const
Definition: String.h:390
String & replace(iterator &i1, iterator &i2, const charT *s)
Definition: String.h:324
iterator begin()
Definition: String.h:236
size_type find_first_not_of(const charT *s, size_type pos=0) const
Definition: String.h:388
std::vector< std::string > split(const string_type &delim) const
Definition: String.h:514
friend std::basic_istream< charT, string_type::traits_type > & getline(std::basic_istream< charT, string_type::traits_type > &is, String &str)
Definition: String.h:640
String & replace(iterator &i1, iterator &i2, InputIterator j1, InputIterator j2)
Definition: String.h:329
size_type find_first_not_of(const charT *s, size_type pos, size_type n) const
Definition: String.h:386
friend bool operator<(const iterator &lhs, const iterator &rhs)
Definition: String.h:139
reference operator[](difference_type n) const
Definition: String.h:131
String & append(const String &str, size_type pos, size_type n)
Definition: String.h:268
size_type find(const charT *s, size_type pos, size_type n) const
Definition: String.h:351
int compare(size_type pos1, size_type n1, const charT *s, size_type n2=npos) const
Definition: String.h:538
void swap(String &str)
Definition: String.h:335
string_type::const_pointer pointer
Definition: String.h:161
size_type find_last_of(const charT *s, size_type pos=npos) const
Definition: String.h:379
size_type find_last_of(const charT *s, size_type pos, size_type n) const
Definition: String.h:377
std::random_access_iterator_tag iterator_category
Definition: String.h:107
String & replace(iterator &i1, iterator &i2, const String &str)
Definition: String.h:320
iterator & operator++()
Definition: String.h:121
int hashCode() const override
Definition: String.h:81
string_type::difference_type difference_type
Definition: String.h:75
reverse_iterator rbegin()
Definition: String.h:240
int compare(size_type pos1, size_type n1, const String &str) const
Definition: String.h:532
const_reverse_iterator rbegin() const
Definition: String.h:241
String & erase(size_type pos=0, size_type n=npos)
Definition: String.h:304
void reserve(size_type n=0)
Definition: String.h:252
String & assign(const String &str)
Definition: String.h:276
String(const charT *s)
Definition: String.h:221
friend std::basic_istream< charT, string_type::traits_type > & getline(std::basic_istream< charT, string_type::traits_type > &is, String &str, charT delim)
Definition: String.h:634
friend void swap(string_type &lhs, String &rhs)
Definition: String.h:341
size_type find_first_not_of(const String &str, size_type pos=0) const
Definition: String.h:384
void swap(string_type &str)
Definition: String.h:339
iterator operator--(int)
Definition: String.h:124
iterator & operator--()
Definition: String.h:123
String substr(size_type pos=0, size_type n=npos) const
Definition: String.h:495
void resize(size_type n)
Definition: String.h:250
const_iterator & operator++()
Definition: String.h:173
iterator operator++(int)
Definition: String.h:122
string_type::difference_type difference_type
Definition: String.h:162
String(size_type n, charT c)
Definition: String.h:222
int compare(const String &str) const
Definition: String.h:530
size_type rfind(const String &str, size_type pos=npos) const
Definition: String.h:357
String toupper() const
Definition: String.h:469
String & replace(iterator &i1, iterator &i2, size_type n, charT c)
Definition: String.h:326
const_iterator()
Definition: String.h:164
const_iterator begin() const
Definition: String.h:237
iterator insert(iterator p, charT c)
Definition: String.h:296
size_type find_last_not_of(const charT *s, size_type pos=npos) const
Definition: String.h:397
friend bool operator<=(const iterator &lhs, const iterator &rhs)
Definition: String.h:145
String & replace(size_type pos1, size_type n1, const String &str, size_type pos2, size_type n2)
Definition: String.h:312
const_iterator(const const_iterator &other)
Definition: String.h:165
void resize(size_type n, charT c)
Definition: String.h:249
void initConvertMaps()
Definition: Utils.cpp:22
String & append(InputIterator first, InputIterator last)
Definition: String.h:273
String & assign(size_type n, charT c)
Definition: String.h:281
string_type::reference reference
Definition: String.h:109
String & toupper_inplace()
Definition: String.h:487
string_type::const_reference const_reference
Definition: String.h:77
String * trim_copy() const
Definition: String.h:427
String & append(size_type n, charT c)
Definition: String.h:271
String & replace(iterator &i1, iterator &i2, const charT *s, size_type n)
Definition: String.h:322
friend bool operator>(const iterator &lhs, const iterator &rhs)
Definition: String.h:142
String & insert(size_type pos1, const String &str)
Definition: String.h:286
String tolower() const
Definition: String.h:443
String & insert(size_type pos, size_type n, charT c)
Definition: String.h:294
size_type find_last_of(const String &str, size_type pos=npos) const
Definition: String.h:375
String & replace(size_type pos, size_type n1, size_type n2, charT c)
Definition: String.h:318
pointer operator->() const
Definition: String.h:171
string_type::const_reference reference
Definition: String.h:160
const_reverse_iterator rend() const
Definition: String.h:243
bool mapsInitFlag
Definition: Utils.cpp:13
String & append(const charT *s)
Definition: String.h:270
string_type::reference reference
Definition: String.h:76
size_type copy(charT *s, size_type n, size_type pos=0) const
Definition: String.h:331
bool operator==(const std::basic_string< char > &other) const override
Definition: String.h:86
string_type::pointer pointer
Definition: String.h:78
String()
Definition: String.h:217
bool operator!=(const std::basic_string< char > &other) const
Definition: String.h:89
allocator_type get_allocator() const
Definition: String.h:347
CONSTDATA date::last_spec last
Definition: date.h:1834
size_type capacity() const
Definition: String.h:251
String(const string_type &str, size_type pos=0, size_type n=npos)
Definition: String.h:219
String(const charT *s, size_type n)
Definition: String.h:220
String & assign(InputIterator first, InputIterator last)
Definition: String.h:283
void insert(iterator p, InputIterator first, InputIterator last)
Definition: String.h:301
iterator & operator-=(difference_type n)
Definition: String.h:129
string_type::difference_type difference_type
Definition: String.h:111
size_type find(charT c, size_type pos=0) const
Definition: String.h:355
bool empty() const
Definition: String.h:254
size_type find(const charT *s, size_type pos=0) const
Definition: String.h:353
int compare(size_type pos1, size_type n1, const String &str, size_type pos2, size_type n2) const
Definition: String.h:534
iterator operator+(difference_type n) const
Definition: String.h:126
size_type find_last_not_of(const charT *s, size_type pos, size_type n) const
Definition: String.h:395
size_type rfind(const charT *s, size_type pos=npos) const
Definition: String.h:361
friend bool operator!=(const iterator &lhs, const iterator &rhs)
Definition: String.h:136
reference operator*() const
Definition: String.h:170
String & append(const String &str)
Definition: String.h:267
string_type::traits_type traits_type
Definition: String.h:71
~String()
Definition: String.h:225
String & replace(size_type pos, size_type n1, const charT *s)
Definition: String.h:316
String & assign(const charT *s)
Definition: String.h:280
void push_back(const charT c)
Definition: String.h:274
reverse_iterator rend()
Definition: String.h:242
iterator & operator+=(difference_type n)
Definition: String.h:127
char uToL[256]
Definition: Utils.cpp:11
string_type::const_pointer const_pointer
Definition: String.h:79
string_type::const_reverse_iterator const_reverse_iterator
Definition: String.h:212
const_iterator & operator--()
Definition: String.h:175
String & replace(size_type pos, size_type n1, const charT *s, size_type n2)
Definition: String.h:314
String & trim_inplace()
Definition: String.h:433
friend class String
Definition: String.h:152
size_type find_first_of(const charT *s, size_type pos=0) const
Definition: String.h:370
string_type::value_type value_type
Definition: String.h:108
String(const String &str, size_type pos=0, size_type n=npos)
Definition: String.h:218
const_iterator(const iterator &other)
Definition: String.h:166
friend struct const_iterator
Definition: String.h:153
friend void swap(String &lhs, string_type &rhs)
Definition: String.h:340
String(InputIterator first, InputIterator last)
Definition: String.h:224
String & assign(const charT *s, size_type n)
Definition: String.h:279
size_type max_size() const
Definition: String.h:248
String & insert(size_type pos, const charT *s)
Definition: String.h:292
String & assign(const String &str, size_type pos, size_type n)
Definition: String.h:277
iterator end()
Definition: String.h:238
String & tolower_inplace()
Definition: String.h:461
std::random_access_iterator_tag iterator_category
Definition: String.h:158
String & insert(size_type pos, const charT *s, size_type n)
Definition: String.h:290
string_type::size_type size_type
Definition: String.h:74
string_type::allocator_type allocator_type
Definition: String.h:73
const charT * data() const
Definition: String.h:345
pointer operator->() const
Definition: String.h:119
const_iterator operator--(int)
Definition: String.h:176
String trim() const
Definition: String.h:421
size_type size() const
Definition: String.h:246
Definition: ICopyable.h:8
iterator(const iterator &other)
Definition: String.h:114
const_reference at(size_type n) const
Definition: String.h:260
const charT * c_str() const
Definition: String.h:344
size_type rfind(charT c, size_type pos=npos) const
Definition: String.h:363
iterator()
Definition: String.h:113
String * tolower_copy() const
Definition: String.h:452
size_type find_first_of(const charT *s, size_type pos, size_type n) const
Definition: String.h:368
size_type find_first_of(charT c, size_type pos=0) const
Definition: String.h:372
std::vector< std::string > split(char delim) const
Definition: String.h:504
size_type length() const
Definition: String.h:247
String & operator=(const String &str)
Definition: String.h:228