StrBuf - string manipulation

The StrBuf class is the preferred general string manipulation class. This class manages the memory associated with a string, including allocating new memory or freeing old memory as required.

The StrBuf class is derived from the StrPtr class, and makes heavy use of the buffer and length members inherited from the StrPtr class. The buffer member of a StrBuf instance is a pointer to the first byte in the string. The length member of a StrBuf instance is the length of the string.

Most member functions maintain the string pointed to by the buffer member of a StrBuf as a null-terminated string. However, the Clear member function does not set the first byte of the string to a null byte, nor does the Extend member function append a null byte to an extended string. If you need to maintain a string as null-terminated when using the Clear() and Extend() member functions, follow the calls to Clear() and Extend() with calls to Terminate().

A number of member functions move the string pointed to by a StrBuf's buffer, and change the buffer member to point to the new location. For this reason, do not cache the pointer. Use StrPtr::Text() whenever the pointer a StrBuf's buffer is required.