44 #ifndef CCXX_STRING_H_ 45 #define CCXX_STRING_H_ 47 #ifndef CCXX_MISSING_H_ 51 #ifndef CCXX_STRCHAR_H_ 55 #ifdef CCXX_NAMESPACES 62 __EXPORT std::istream &
getline(std::istream &is, String &str,
char delim =
'\n',
size_t size = 0);
108 char text[(
sizeof(
char *) + (
sizeof(
size_t) * 2) + 1)];
126 {
return content.ministring.big;};
136 const char *
set(
const char *str,
size_t len = 0);
144 void set(
const String &str);
154 const char *
set(
size_t size,
const char *format, ...);
163 void copy(
const String &str);
177 static char *getSpace(
size_t size);
186 size_t setSize(
size_t size);
193 void setLength(
size_t len);
205 virtual int compare(
const char *text,
size_t len = 0,
size_t index = 0)
const;
216 size_t search(
const char *text,
size_t clen = 0,
size_t offset = 0)
const;
247 String(std::string
string);
256 String(
const String &str,
size_t offset,
size_t len = npos);
265 String(
size_t size,
const char *format, ...);
274 String(
size_t count,
const char *str);
283 String(
size_t count,
const char fill =
' ');
297 const char *getIndex(
size_t index)
const;
304 char *getText(
void)
const;
311 long getValue(
long defvalue = 0l)
const;
318 bool getBool(
bool defbool =
false)
const;
325 const size_t getLength(
void)
const;
332 const size_t getSize(
void)
const;
339 bool isEmpty(
void)
const;
346 void resize(
size_t size);
358 char at(ssize_t offset)
const;
368 unsigned count(
const String &s,
size_t offset = 0)
const;
379 unsigned count(
const char *s,
size_t offset = 0,
size_t len = 0)
const;
388 String token(
const char *delim =
" \t\n\r",
size_t offset = 0);
398 size_t find(
const String &s,
size_t offset = 0,
unsigned instance = 1)
const;
407 size_t rfind(
const String &s,
size_t offset = 0)
const;
418 size_t find(
const char *s,
size_t offset = 0,
size_t len = 0,
unsigned count = 1)
const;
428 size_t rfind(
const char *s,
size_t offset = 0,
size_t len = 0)
const;
435 inline void trim(
const char *cs)
436 {setLength(
strtrim(cs, getText(), getLength()));};
443 inline void chop(
const char *cs)
444 {setLength(
strchop(cs, getText(), getLength()));};
451 void strip(
const char *cs);
466 void trim(
size_t count);
474 void erase(
size_t start,
size_t len = npos);
483 void insert(
size_t start,
const char *text,
size_t len = 0);
491 void insert(
size_t start,
const String &str);
502 void replace(
size_t start,
size_t len,
const char *text,
size_t count = 0);
512 void replace(
size_t start,
size_t len,
const String &
string);
523 inline size_t find(
unsigned instance,
const char *text,
size_t offset = 0,
size_t len = 0)
const 524 {
return find(text, offset, len, instance);};
534 inline size_t find(
unsigned instance,
const String &
string,
size_t offset = 0)
const 535 {
return find(
string, offset, instance);};
546 {
return String(*
this, start, len);};
555 inline const char *(
index)(
size_t ind)
const 556 {
return getIndex(ind);};
563 {resize(getLength() + 1);};
578 inline operator char *()
const 611 {
return strlen(getText());};
619 {
return getLength();};
641 void append(
const char *str,
size_t count = 0);
650 void append(
size_t size,
const char *format, ...);
660 void append(
const char *str,
size_t offset,
size_t count);
674 void append(
const String &str);
687 inline const char *operator =(
const char *str)
707 {append(str);
return *
this;};
713 {add(c);
return *
this;};
719 {append(str);
return *
this;};
725 {append(str.c_str());
return *
this;};
737 friend std::istream &
getline(std::istream &is,
String &str,
char delim,
size_t size);
760 friend __EXPORT int strprintf(
String &str,
size_t size,
const char *format, ...);
763 bool operator<(
const String &str)
const;
764 bool operator<(
const char *str)
const;
765 bool operator>(
const String &str)
const;
766 bool operator>(
const char *str)
const;
767 bool operator<=(
const String &str)
const;
768 bool operator<=(
const char *str)
const;
769 bool operator>=(
const String &str)
const;
770 bool operator>=(
const char *str)
const;
771 bool operator==(
const String &str)
const;
772 bool operator==(
const char *str)
const;
773 bool operator!=(
const String &str)
const;
774 bool operator!=(
const char *str)
const;
782 {append(16,
"%d", i);
return *
this;};
785 {append(16,
"%u", i);
return *
this;};
788 {append(16,
"%l", l);
return *
this;};
791 {append(16,
"%ul", l);
return *
this;};
794 {append(32,
"%f", f);
return *
this;};
797 {append(32,
"%f", d);
return *
this;};
800 {append(8,
"%hd", s);
return *
this;};
803 {append(8,
"%hu", s);
return *
this;};
810 {
set(16,
"%d", i);
return *
this;};
813 {
set(16,
"%u", i);
return *
this;};
816 {
set(16,
"%l", l);
return *
this;};
819 {
set(16,
"%ul", l);
return *
this;};
822 {
set(32,
"%f", f);
return *
this;};
825 {
set(32,
"%f", d);
return *
this;};
828 {
set(8,
"%hd", s);
return *
this;};
831 {
set(8,
"%hu", s);
return *
this;};
835 {copy(original);
return *
this;};
840 bool operator*=(
const String &str)
const;
845 bool operator*=(
const char *str)
const;
895 void operator delete(
void *obj);
898 #ifdef CCXX_NAMESPACES size_t size
Definition: string.h:104
String & operator=(long l)
Definition: string.h:815
void chop(size_t chars)
Chop n leading characters from a string.
Definition: string.h:458
This is a generic and portable string class.
Definition: string.h:80
String & operator+=(unsigned short s)
Definition: string.h:802
String & operator=(unsigned int i)
Definition: string.h:812
String & operator+=(float f)
Definition: string.h:793
size_t size_type
Definition: string.h:221
bool operator!(void) const
Logical test for string empty.
Definition: string.h:586
void compact(void)
Reduce the size of the string allocation to the minimum needed based on the current effective length...
Definition: string.h:562
String & operator=(double d)
Definition: string.h:824
#define NEW_THROWS
Definition: config.h:945
String & operator+=(unsigned int i)
Definition: string.h:784
String & operator=(const String &original)
Definition: string.h:834
static const unsigned slotsize
Definition: string.h:84
void chop(const char *cs)
Chop leading characters from a string.
Definition: string.h:443
#define __EXPORT
Definition: config.h:979
String & operator+=(const String &str)
Append operator.
Definition: string.h:706
substitute functions which may be missing in target platform libc.
String & operator=(unsigned long l)
Definition: string.h:818
String & operator+=(const char *str)
Append operator.
Definition: string.h:718
static const unsigned minsize
Definition: string.h:83
String substr(size_t start, size_t len) const
Return a new string that contains a specific substring of the current string.
Definition: string.h:545
size_t length(void) const
Get length as if null terminated string.
Definition: string.h:610
char * text(void) const
Alternate get text method.
Definition: string.h:594
Common and portable character string related functions.
bool empty(void) const
Return true if string is empty.
Definition: string.h:632
String & operator=(float f)
Definition: string.h:821
size_t find(unsigned instance, const char *text, size_t offset=0, size_t len=0) const
A more convenient version of find for nth occurences, by putting the instance first.
Definition: string.h:523
String & operator+=(double d)
Definition: string.h:796
friend std::istream & operator>>(std::istream &is, String &str)
Stream input into our variable.
Definition: string.h:748
bool big
Definition: string.h:110
String & operator=(short s)
Definition: string.h:827
String & operator+=(unsigned long l)
Definition: string.h:790
String & operator=(int i)
Assignment operator.
Definition: string.h:809
size_t length
Definition: string.h:105
char length
Definition: string.h:109
char * text
Definition: string.h:103
The StringObject class is used to derive subclasses that use the String managed memory pool for all s...
Definition: string.h:884
char * data(void) const
Alternate get text method.
Definition: string.h:602
String & operator+=(long l)
Definition: string.h:787
String & operator+=(int i)
Append operator.
Definition: string.h:781
static const unsigned slotcount
Definition: string.h:87
static const unsigned pagesize
Definition: string.h:85
const char *() index(size_t ind) const
Return an indexed string based on the index, such as from a find.
Definition: string.h:555
size_t size(void) const
Get actual length of string data.
Definition: string.h:618
__EXPORT size_t strchop(const char *cs, char *str, size_t len=0)
__EXPORT char * find(const char *cs, char *str, size_t len=0)
__EXPORT std::ostream & operator<<(std::ostream &os, const IPV4Address &ia)
String & operator+=(short s)
Definition: string.h:799
static const unsigned slotlimit
Definition: string.h:86
static const size_t npos
Definition: string.h:219
const char operator[](unsigned ind) const
Extract a character by array indexing.
Definition: string.h:681
size_t find(unsigned instance, const String &string, size_t offset=0) const
A more convenient version of find for nth occurences, by putting the instance first.
Definition: string.h:534
bool isBig(void) const
Determine if string is allocated in local variable or an external reference.
Definition: string.h:125
__EXPORT std::istream & getline(std::istream &is, String &str, char delim='\n', size_t size=0)
__EXPORT char * strip(const char *cs, char *str, size_t len=0)
__EXPORT size_t strtrim(const char *cs, char *str, size_t len=0)
__EXPORT char * rfind(const char *cs, char *str, size_t len=0)
size_t capacity(void) const
Get space allocated to hold current string.
Definition: string.h:626
String & operator+=(char c)
Append operator.
Definition: string.h:712
String & operator+=(const std::string &str)
Append operator.
Definition: string.h:724
String & operator=(unsigned short s)
Definition: string.h:830
void trim(const char *cs)
Trim trailing characters from a string.
Definition: string.h:435
char * c_str(void) const
Old ANSI C++ compatible string pointer extraction.
Definition: string.h:570