Bayonne2 / Common C++ 2 Framework
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Static Protected Attributes | Private Attributes | Static Private Attributes | Friends
String Class Reference

This is a generic and portable string class. More...

#include <string.h>

Inheritance diagram for String:
Inheritance graph
[legend]
Collaboration diagram for String:
Collaboration graph
[legend]

Public Types

typedef size_t  size_type
 

Public Member Functions

  String ()
  Construct an empty string. More...
 
  String (const String &original)
  Copy constructor. More...
 
  String (const char *str)
  Create a string from a cstring. More...
 
  String (std::string string)
  Create a String from std::string. More...
 
  String (const String &str, size_t offset, size_t len=npos)
  Create a new string from a subset of another string. More...
 
  String (size_t count, const char *str)
  Create a string of a known size, and optionally fill with content. More...
 
  String (size_t count, const char fill= ' ')
  Fill a new string with character data. More...
 
virtual  ~String ()
  Destroy the string... More...
 
const char *  getIndex (size_t index) const
  Get a string pointer to string content based on an indexed offset. More...
 
char *  getText (void) const
  Get the text of a string. More...
 
long  getValue (long defvalue=0l) const
  Get the value of a string. More...
 
bool  getBool (bool defbool=false) const
  Get the bool flag of a string. More...
 
const size_t  getLength (void) const
  Get the assigned length of string. More...
 
const size_t  getSize (void) const
  Get the allocation size of the string variable. More...
 
bool  isEmpty (void) const
  Return true if string is empty. More...
 
void  resize (size_t size)
  Re-allocate buffer space for string. More...
 
void  clear (void)
  Clear the contents of the entire string. More...
 
char  at (ssize_t offset) const
  Return a character at a known offset. More...
 
unsigned  count (const String &s, size_t offset=0) const
  Count the number of occurences of a specific string within our string. More...
 
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. More...
 
String  token (const char *delim=" \t\n\r", size_t offset=0)
  Extract a new string as a token from the current string. More...
 
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. More...
 
size_t  rfind (const String &s, size_t offset=0) const
  Find last occurence of a substring in our string. More...
 
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. More...
 
size_t  rfind (const char *s, size_t offset=0, size_t len=0) const
  Find last occurence of a text in our string. More...
 
void  trim (const char *cs)
  Trim trailing characters from a string. More...
 
void  chop (const char *cs)
  Chop leading characters from a string. More...
 
void  strip (const char *cs)
  Strip lead and trailing characters from a string. More...
 
void  chop (size_t chars)
  Chop n leading characters from a string. More...
 
void  trim (size_t count)
  Trim n trailing characters from a string. More...
 
void  erase (size_t start, size_t len=npos)
  Erase a portion of string. More...
 
void  insert (size_t start, const char *text, size_t len=0)
  Insert text into a string. More...
 
void  insert (size_t start, const String &str)
  Insert other string into our string. More...
 
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. More...
 
void  replace (size_t start, size_t len, const String &string)
  Replace text at a specific position in the string with new string,. More...
 
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. More...
 
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. More...
 
String  substr (size_t start, size_t len) const
  Return a new string that contains a specific substring of the current string. More...
 
const char *()  index (size_t ind) const
  Return an indexed string based on the index, such as from a find. More...
 
void  compact (void)
  Reduce the size of the string allocation to the minimum needed based on the current effective length. More...
 
char *  c_str (void) const
  Old ANSI C++ compatible string pointer extraction. More...
 
  operator char * () const
  Get our string data through dereference operator. More...
 
bool  operator! (void) const
  Logical test for string empty. More...
 
char *  text (void) const
  Alternate get text method. More...
 
char *  data (void) const
  Alternate get text method. More...
 
size_t  length (void) const
  Get length as if null terminated string. More...
 
size_t  size (void) const
  Get actual length of string data. More...
 
size_t  capacity (void) const
  Get space allocated to hold current string. More...
 
bool  empty (void) const
  Return true if string is empty. More...
 
void  append (const char *str, size_t count=0)
  Append text to the end of the current string. More...
 
void  append (const char *str, size_t offset, size_t count)
  Append text into the current string. More...
 
void  add (char c)
  Add a character to the end of a string. More...
 
void  append (const String &str)
  Append string to the end of the current string. More...
 
const char  operator[] (unsigned ind) const
  Extract a character by array indexing. More...
 
const char *  operator= (const char *str)
  Assign our string for c string. More...
 
Stringoperator+= (const String &str)
  Append operator. More...
 
Stringoperator+= (char c)
  Append operator. More...
 
Stringoperator+= (const char *str)
  Append operator. More...
 
Stringoperator+= (const std::string &str)
  Append operator. More...
 
bool  operator< (const String &str) const
 
bool  operator< (const char *str) const
 
bool  operator> (const String &str) const
 
bool  operator> (const char *str) const
 
bool  operator<= (const String &str) const
 
bool  operator<= (const char *str) const
 
bool  operator>= (const String &str) const
 
bool  operator>= (const char *str) const
 
bool  operator== (const String &str) const
 
bool  operator== (const char *str) const
 
bool  operator!= (const String &str) const
 
bool  operator!= (const char *str) const
 
Stringoperator= (const String &original)
 
bool  operator*= (const String &str) const
  Test if string is contained in our string. More...
 
bool  operator*= (const char *str) const
  Test if text is contained in our string. More...
 

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. More...
 
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. More...
 
void  set (const String &str)
  Set the content of the string variable to that of another variable. More...
 
void  copy (const String &str)
  Impliment the copy constructor, used internally. More...
 
void  init (void)
  Used to initialize a string object. More...
 
size_t  setSize (size_t size)
  Set the size of allocated space in the string variable (capacity) to a known value. More...
 
void  setLength (size_t len)
  Set the length value of the string content. More...
 
virtual int  compare (const char *text, size_t len=0, size_t index=0) const
  A derivable low level comparison operator. More...
 
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. More...
 

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. More...
 

Static Protected Attributes

static const unsigned  minsize
 
static const unsigned  slotsize
 
static const unsigned  pagesize
 
static const unsigned  slotlimit
 
static const unsigned  slotcount
 

Private Attributes

union {
   struct {
      char *   text
 
      size_t   size
 
      size_t   length
 
   }   bigstring
 
   struct {
      char   text [(sizeof(char *)+(sizeof(size_t)*2)+1)]
 
      char   length: 6
 
      bool   big: 1
 
   }   ministring
 
content
 

Static Private Attributes

static MemPagerpager
 
static char **  idx
 

Friends

class  StringObject
 
class  MemPager
 
__EXPORT String  operator+ (const String &s1, const String &s2)
  Add two strings and return a temporary object. More...
 
__EXPORT String  operator+ (const String &s1, const char *s2)
 
__EXPORT String  operator+ (const char *s1, const String &s2)
 
__EXPORT String  operator+ (const String &s1, const char c2)
 
__EXPORT String  operator+ (const char c1, const String &s2)
 
__EXPORT 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. More...
 
__EXPORT std::ostream &  operator<< (std::ostream &os, const String &str)
  Stream the content of our string variable directly to a C++ streaming source. More...
 
std::istream &  operator>> (std::istream &is, String &str)
  Stream input into our variable. More...
 

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.

Author
David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m Generic string class.

Definition at line 77 of file string.h.

Member Typedef Documentation

typedef size_t String::size_type

Definition at line 218 of file string.h.

Constructor & Destructor Documentation

String::String ( )

Construct an empty string.

String::String ( const Stringoriginal )

Copy constructor.

Parameters
original string to copy from.
String::String ( const char *  str )

Create a string from a cstring.

Parameters
str text to set with.
String::String ( std::string  string )

Create a String from std::string.

Parameters
string from std::string to copy from.
String::String ( const Stringstr,
size_t  offset,
size_t  len = npos  
)

Create a new string from a subset of another string.

Parameters
str reference of source string.
offset offset to start of data in prior string.
len length of our substring.
String::String ( size_t  count,
const char *  str 
)

Create a string of a known size, and optionally fill with content.

Parameters
count size to allocate for our new string.
str content to put into it.
String::String ( size_t  count,
const char  fill = ' ' 
)

Fill a new string with character data.

Parameters
count size of new string.
fill char to fill string with.
virtual String::~String ( )
virtual

Destroy the string...

Member Function Documentation

void String::add ( char  c )

Add a character to the end of a string.

Parameters
c char to add.
void String::append ( const char *  str,
size_t  count = 0 
)

Append text to the end of the current string.

Parameters
str text to append.
count size of text to append.
void String::append ( const char *  str,
size_t  offset,
size_t  count 
)

Append text into the current string.

Parameters
str text to append.
offset offset to overlay.
count size of text to append.
void String::append ( const Stringstr )

Append string to the end of the current string.

Parameters
str string to append.
char String::at ( ssize_t  offset ) const

Return a character at a known offset.

Returns
character at offset.
char* String::c_str ( void  ) const
inline

Old ANSI C++ compatible string pointer extraction.

Returns
string data.

Definition at line 567 of file string.h.

size_t String::capacity ( void  ) const
inline

Get space allocated to hold current string.

Returns
space of memory buffer from heap or local.

Definition at line 623 of file string.h.

void String::chop ( const char *  cs )
inline

Chop leading characters from a string.

Parameters
cs list of chars to chop.

Definition at line 440 of file string.h.

void String::chop ( size_t  chars )
inline

Chop n leading characters from a string.

Parameters
chars count to chop.

Definition at line 455 of file string.h.

void String::clear ( void  )

Clear the contents of the entire string.

void String::compact ( void  )
inline

Reduce the size of the string allocation to the minimum needed based on the current effective length.

Definition at line 559 of file string.h.

virtual int String::compare ( const char *  text,
size_t  len = 0,
size_t  index = 0 
) const
protectedvirtual

A derivable low level comparison operator.

This can be used to create custom comparison data types in derived string classes.

Returns
0 if match, or value for ordering.
Parameters
text text to compare.
len length of text to compare.
index offset from start of string, used in searchs.
void String::copy ( const Stringstr )
protected

Impliment the copy constructor, used internally.

Will always create a minimum sized string allocation.

Parameters
str string to copy from.
unsigned String::count ( const Strings,
size_t  offset = 0 
) const

Count the number of occurences of a specific string within our string.

Returns
count of instances.
Parameters
s string to test.
offset offset to start from.
unsigned String::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.

Returns
count of instances.
Parameters
s text pattern to find
offset offset to start from.
len length of text pattern if specified.
char* String::data ( void  ) const
inline

Alternate get text method.

Returns
string data.

Definition at line 599 of file string.h.

bool String::empty ( void  ) const
inline

Return true if string is empty.

Definition at line 629 of file string.h.

void String::erase ( size_t  start,
size_t  len = npos  
)

Erase a portion of string.

Parameters
start starting index to erase from.
len number of characters to erase.
size_t String::find ( const Strings,
size_t  offset = 0,
unsigned  instance = 1 
) const

Find the index to the nth instance of a substring in our string.

Returns
index of found substring.
Parameters
s string to search for.
offset offset to start at.
instance instance to look for.
size_t String::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.

Returns
index of found substring.
Parameters
s string to search for.
offset offset to start at.
len size of string text.
count instance to look for.
size_t String::find ( unsigned  instance,
const char *  text,
size_t  offset = 0,
size_t  len = 0 
) const
inline

A more convenient version of find for nth occurences, by putting the instance first.

Parameters
instance nth instance to look for.
text text to look for.
offset offset to start at.
len length of text.

Definition at line 520 of file string.h.

size_t String::find ( unsigned  instance,
const Stringstring,
size_t  offset = 0 
) const
inline

A more convenient version of find for nth occurences, by putting the instance first.

Parameters
instance nth instance to look for.
string reference to look for.
offset offset to start at.

Definition at line 531 of file string.h.

bool String::getBool ( bool  defbool = false ) const

Get the bool flag of a string.

Returns
boolean value.
const char* String::getIndex ( size_t  index ) const

Get a string pointer to string content based on an indexed offset.

A NULL is returned if the index is outsize of range.

Returns
string content or NULL if invalid index.
Parameters
index
const size_t String::getLength ( void  ) const

Get the assigned length of string.

Returns
string length.
const size_t String::getSize ( void  ) const

Get the allocation size of the string variable.

Returns
allocation size.
static char* String::getSpace ( size_t  size )
staticprotected

Used to fetch memory, if needed, based on the size, from the pager, or the system heap.

Returns
string pointer to space.
Parameters
size of space needed.
char* String::getText ( void  ) const

Get the text of a string.

Returns
string content.
long String::getValue ( long  defvalue = 0l ) const

Get the value of a string.

Returns
string value as number.
const char*() String::index ( size_t  ind ) const
inline

Return an indexed string based on the index, such as from a find.

If out of range, a NULL string is returned.

Returns
pointer to string data from our string,
Parameters
ind index or offset to use.

Definition at line 552 of file string.h.

void String::init ( void  )
protected

Used to initialize a string object.

void String::insert ( size_t  start,
const char *  text,
size_t  len = 0 
)

Insert text into a string.

Parameters
start starting offset to insert at.
text text to insert.
len size of text to insert.
void String::insert ( size_t  start,
const Stringstr 
)

Insert other string into our string.

Parameters
start string offset to insert at.
str string to insert.
bool String::isBig ( void  ) const
inlineprotected

Determine if string is allocated in local variable or an external reference.

Returns
true if external heap is used.

Definition at line 122 of file string.h.

bool String::isEmpty ( void  ) const

Return true if string is empty.

Returns
true if string is empty string.
size_t String::length ( void  ) const
inline

Get length as if null terminated string.

Returns
cstring length.

Definition at line 607 of file string.h.

String::operator char * ( ) const
inline

Get our string data through dereference operator.

Returns
string data.

Definition at line 575 of file string.h.

bool String::operator! ( void  ) const
inline

Logical test for string empty.

Returns
true if is empty.

Definition at line 583 of file string.h.

bool String::operator!= ( const Stringstr ) const
bool String::operator!= ( const char *  str ) const
bool String::operator*= ( const Stringstr ) const

Test if string is contained in our string.

bool String::operator*= ( const char *  str ) const

Test if text is contained in our string.

String& String::operator+= ( const Stringstr )
inline

Append operator.

Definition at line 703 of file string.h.

String& String::operator+= ( char  c )
inline

Append operator.

Definition at line 709 of file string.h.

String& String::operator+= ( const char *  str )
inline

Append operator.

Definition at line 715 of file string.h.

String& String::operator+= ( const std::string &  str )
inline

Append operator.

Definition at line 721 of file string.h.

bool String::operator< ( const Stringstr ) const
bool String::operator< ( const char *  str ) const
bool String::operator<= ( const Stringstr ) const
bool String::operator<= ( const char *  str ) const
const char* String::operator= ( const char *  str )
inline

Assign our string for c string.

Definition at line 684 of file string.h.

String& String::operator= ( const Stringoriginal )
inline

Definition at line 831 of file string.h.

bool String::operator== ( const Stringstr ) const
bool String::operator== ( const char *  str ) const
bool String::operator> ( const Stringstr ) const
bool String::operator> ( const char *  str ) const
bool String::operator>= ( const Stringstr ) const
bool String::operator>= ( const char *  str ) const
const char String::operator[] ( unsigned  ind ) const
inline

Extract a character by array indexing.

Returns
character code.

Definition at line 678 of file string.h.

void String::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.

Parameters
start starting offset to replace at.
len length of text to remove.
text text to replace with.
count size of replacement text.
void String::replace ( size_t  start,
size_t  len,
const Stringstring 
)

Replace text at a specific position in the string with new string,.

Parameters
start starting offset to replace at.
len length of text to remove.
string reference to replace with.
void String::resize ( size_t  size )

Re-allocate buffer space for string.

Parameters
size new size to use.
size_t String::rfind ( const Strings,
size_t  offset = 0 
) const

Find last occurence of a substring in our string.

Returns
index of last instance found,
Parameters
s string to search for.
offset offset to start from.
size_t String::rfind ( const char *  s,
size_t  offset = 0,
size_t  len = 0 
) const

Find last occurence of a text in our string.

Returns
index of last instance found,
Parameters
s string to search for.
offset offset to start from.
len size of string to look for.
size_t String::search ( const char *  text,
size_t  clen = 0,
size_t  offset = 0 
) const
protected

An internal method used to search for a substring starting at a known offset.

Used by find and count methods.

Returns
npos if fails, or offset to text found.
Parameters
text text to search for.
clen length of search text.
offset offset to start from.
const char* String::set ( const char *  str,
size_t  len = 0 
)
protected

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.
void String::set ( const Stringstr )
protected

Set the content of the string variable to that of another variable.

Uses the string set method.

Parameters
str string to copy from.
void String::setLength ( size_t  len )
protected

Set the length value of the string content.

Parameters
len size in bytes.
size_t String::setSize ( size_t  size )
protected

Set the size of allocated space in the string variable (capacity) to a known value.

The value is recomputed and adjusted based on allocation method.

Parameters
size in bytes.
size_t String::size ( void  ) const
inline

Get actual length of string data.

Returns
actual size of string.

Definition at line 615 of file string.h.

void String::strip ( const char *  cs )

Strip lead and trailing characters from a string.

Parameters
cs list of chars to strip.
String String::substr ( size_t  start,
size_t  len 
) const
inline

Return a new string that contains a specific substring of the current string.

Returns
new string.
Parameters
start starting offset for extracted substring.
len length of substring.

Definition at line 542 of file string.h.

char* String::text ( void  ) const
inline

Alternate get text method.

Returns
string data.

Definition at line 591 of file string.h.

String String::token ( const char *  delim = " \t\n\r",
size_t  offset = 0 
)

Extract a new string as a token from the current string.

Returns
string containing token.
Parameters
delim deliminator characters.
offset offset to start from.
void String::trim ( const char *  cs )
inline

Trim trailing characters from a string.

Parameters
cs list of chars to trim.

Definition at line 432 of file string.h.

void String::trim ( size_t  count )

Trim n trailing characters from a string.

Parameters
count number of bytes to trim.

Friends And Related Function Documentation

__EXPORT std::istream& getline ( std::istream &  is,
Stringstr,
char  delim = '\n',
size_t  size = 0 
)
friend

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.
friend class MemPager
friend

Definition at line 89 of file string.h.

__EXPORT String operator+ ( const Strings1,
const Strings2 
)
friend

Add two strings and return a temporary object.

__EXPORT String operator+ ( const Strings1,
const char *  s2 
)
friend
__EXPORT String operator+ ( const char *  s1,
const Strings2 
)
friend
__EXPORT String operator+ ( const Strings1,
const char  c2 
)
friend
__EXPORT String operator+ ( const char  c1,
const Strings2 
)
friend
__EXPORT std::ostream& operator<< ( std::ostream &  os,
const Stringstr 
)
friend

Stream the content of our string variable directly to a C++ streaming source.

std::istream& operator>> ( std::istream &  is,
Stringstr 
)
friend

Stream input into our variable.

Definition at line 745 of file string.h.

friend class StringObject
friend

Definition at line 86 of file string.h.

Field Documentation

bool String::big

Definition at line 107 of file string.h.

struct { ... } String::bigstring
union { ... } String::content
char** String::idx
staticprivate

Definition at line 92 of file string.h.

size_t String::length

Definition at line 102 of file string.h.

char String::length

Definition at line 106 of file string.h.

struct { ... } String::ministring
const unsigned String::minsize
staticprotected

Definition at line 80 of file string.h.

const size_t String::npos
static

Definition at line 216 of file string.h.

MemPager* String::pager
staticprivate

Definition at line 91 of file string.h.

const unsigned String::pagesize
staticprotected

Definition at line 82 of file string.h.

size_t String::size

Definition at line 101 of file string.h.

const unsigned String::slotcount
staticprotected

Definition at line 84 of file string.h.

const unsigned String::slotlimit
staticprotected

Definition at line 83 of file string.h.

const unsigned String::slotsize
staticprotected

Definition at line 81 of file string.h.

char* String::text

Definition at line 100 of file string.h.

char String::text[(sizeof(char *)+(sizeof(size_t)*2)+1)]

Definition at line 105 of file string.h.


The documentation for this class was generated from the following file:

Generated on Dec 21, 2017 for commoncpp2-1.8.1, ccrtp-1.7.2, libzrtpcpp-2.3.4, ccscript3-1.1.7, ccaudio2-1.0.0 and bayonne2-2.3.2 (after installation in /usr/local/) by   doxygen 1.8.6

AltStyle によって変換されたページ (->オリジナル) /