C++
string objects provide developers with a number of great advantages over their
C counterparts. For the most part, the
string
class makes referring to strings through the use of character pointers
unnecessary. This eliminates an entire class of software defects that arise
from the use of uninitialized and incorrectly valued pointers. C++ strings
dynamically and transparently grow their internal data storage space to
accommodate increases in the size of the string data. This means that when the
data in a string grows beyond the limits of the memory initially allocated to
it, the string object will make the memory management calls that take space
from and return space to the heap. Consistent allocation schemes prevent memory
leaks and have the potential to be much more efficient than “roll your
own” memory management.
The
string
class member functions provide a fairly comprehensive set of tools for
creating, modifying, and searching in strings.
string
comparisons are always case sensitive, but you can work around this by copying
string data to C style null terminated strings and using case insensitive
string comparison functions, temporarily converting the data held in sting
objects to a single case, or by creating a case insensitive string class which
overrides the character traits used to create the
basic_string
object.