String ()
Construct an empty string. String (const String &original)
Copy constructor. String (const char *str)
Create a string from a cstring. String (std::string string)
Create a String from std::string.
String (const String &str, size_t offset, size_t len=npos)
Create a new string from a subset of another string. String (size_t size, const char *format,...)
Create a string from formatted text input. String (size_t count, const char fill= ' ')
Fill a new string with character data.
virtual ~String ()
Destroy the string.
const char * getIndex (size_t index) const
Get a string pointer to string content based on an indexed offset.
char * getText (void) const
Get the text of a string.
long getValue (long defvalue=0l) const
Get the value of a string.
bool getBool (bool defbool=false) const
Get the bool flag of a string.
const size_t getLength (void) const
Get the assigned length of string.
const size_t getSize (void) const
Get the allocation size of the string variable.
bool isEmpty (void) const
Return true if string is empty.
void resize (size_t size)
Re-allocate buffer space for string.
void clear (void)
Clear the contents of the entire string.
char at (ssize_t offset) const
Return a character at a known offset.
unsigned count (const String &s, size_t offset=0) const
Count the number of occurences of a specific string within our string.
unsigned count (const char *s, size_t offset=0, size_t len=0) const
Count the number of occurrences of a specific text pattern within our string. Stringtoken (const char *delim=' \t\n\r', size_t offset=0)
Extract a new string as a token from the current string.
size_t find (const String &s, size_t offset=0, unsigned instance=1) const
Find the index to the nth instance of a substring in our string.
size_t rfind (const String &s, size_t offset=0) const
Find last occurence of a substring in our string.
size_t find (const char *s, size_t offset=0, size_t len=0, unsigned count=1) const
Find the index to the nth instance of text in our string.
size_t rfind (const char *s, size_t offset=0, size_t len=0) const
Find last occurence of a text in our string.
void trim (const char *cs)
Trim trailing characters from a string.
void chop (const char *cs)
Chop leading characters from a string.
void strip (const char *cs)
Strip lead and trailing characters from a string.
void chop (size_t chars)
Chop n leading characters from a string.
void trim (size_t count)
Trim n trailing characters from a string.
void erase (size_t start, size_t len=npos)
Erase a portion of string.
void insert (size_t start, const char *text, size_t len=0)
Insert text into a string.
void insert (size_t start, const String &str)
Insert other string into our string.
void replace (size_t start, size_t len, const char *text, size_t count=0)
Replace text at a specific position in the string with new text.
void replace (size_t start, size_t len, const String &string)
Replace text at a specific position in the string with new string,.
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.
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. Stringsubstr (size_t start, size_t len) const
Return a new string that contains a specific substring of the current string.
const char *() index (size_t ind) const
Return an indexed string based on the index, such as from a find.
void compact (void)
Reduce the size of the string allocation to the minimum needed based on the current effective length.
char * c_str (void) const
Old ANSI C++ compatible string pointer extraction. operator char * () const
Get our string data through dereference operator.
bool operator! (void) const
Logical test for string empty.
char * text (void) const
Alternate get text method.
char * data (void) const
Alternate get text method.
size_t length (void) const
Get length as if null terminated string.
size_t size (void) const
Get actual length of string data.
size_t capacity (void) const
Get space allocated to hold current string.
bool empty (void) const
Return true if string is empty.
void append (const char *str, size_t count=0)
Append text to the end of the current string.
void append (size_t size, const char *format,...)
Append formatted text to the end of the current string.
void append (const char *str, size_t offset, size_t count)
Append text into the current string.
void add (char c)
Add a character to the end of a string.
void append (const String &str)
Append string to the end of the current string.
const char operator[] (unsigned ind) const
Extract a character by array indexing.
const char * operator= (const char *str)
Assign our string for c string. String & operator+= (const String &str)
Append operator. String & operator+= (char c)
Append operator. String & operator+= (const char *str)
Append operator. String & operator+= (const std::string &str)
Append operator.
bool operator< (const String &str) const
bool operator*= (const String &str) const
Test if string is contained in our string.
bool operator*= (const char *str) const
Test if text is contained in our string.
Static Public Attributes
static const size_t npos
Protected Member Functions
bool isBig (void) const
Determine if string is allocated in local variable or an external reference.
const char * set (const char *str, size_t len=0)
Set the content of the string variable to the specified string value, and use smart re-allocation strategies if appropriate to shrink the size of the variable.
void set (const String &str)
Set the content of the string variable to that of another variable.
const char * set (size_t size, const char *format,...)
Set the content of the string variable to that of a formatted printf style string.
void copy (const String &str)
Impliment the copy constructor, used internally.
void init (void)
Used to initialize a string object.
size_t setSize (size_t size)
Set the size of allocated space in the string variable (capacity) to a known value.
void setLength (size_t len)
Set the length value of the string content.
virtual int compare (const char *text, size_t len=0, size_t index=0) const
A derivable low level comparison operator.
size_t search (const char *text, size_t clen=0, size_t offset=0) const
An internal method used to search for a substring starting at a known offset.
Static Protected Member Functions
static char * getSpace (size_t size)
Used to fetch memory, if needed, based on the size, from the pager, or the system heap.
Static Protected Attributes
static const unsigned minsize
static const unsigned slotsize
static const unsigned pagesize
static const unsigned slotlimit
static const unsigned slotcount
Friends
class StringObject
class MemPager
Stringoperator+ (const String &s1, const String &s2)
Add two strings and return a temporary object. Stringoperator+ (const String &s1, const char *s2)
std::istream & getline (std::istream &is, String &str, char delim= '\n', size_t size=0)
Fetch input from a std::istream into the current string variable until either the string variable is filled (based on current length) or the deliminator is read.
std::ostream & operator<< (std::ostream &os, const String &str)
Stream the content of our string variable directly to a C++ streaming source.
std::istream & operator>> (std::istream &is, String &str)
Stream input into our variable.
int strprintf (String &str, size_t size, const char *format,...)
Print values directly into a string variable.
Detailed Description
This is a generic and portable string class.
It uses optimized memory allocation strategies to efficiently handle smaller string content by grouping strings into 32 byte aligned slots that can be re-allocated from a free list directly.
While meant to cover the basic functionality of the ANSI C++ string class in form and function, this class offers some important enhancements, including the ability to derive class type specific versions of itself. The latter might be used to derive a unicode string, a string for data and time data types, or to add case insensitive comparisons, for example.
Set the content of the string variable to the specified string value, and use smart re-allocation strategies if appropriate to shrink the size of the variable. Parameters:
str string to set.
len length of string if passed.
Fetch input from a std::istream into the current string variable until either the string variable is filled (based on current length) or the deliminator is read. Parameters:
is stream to read.
str string to save into.
delim deliminator to use.
size optional size limitor.