WvString is an implementation of a simple and efficient printable-string class. It leaves out many of the notational conveniences provided by other string classes because they waste too much CPU time and space.
It does the one thing really missing from char* strings, that is, dynamic buffer management.
When you copy one WvString to another, it does _not_ duplicate the buffer; it just creates another pointer to it. To really duplicate the buffer, call the unique() member function.
However, if you assign a char* to a WvString, the entire string will be copied. This is sometimes wasteful, but it helps avoid _a lot_ of bugs. If you don't want it copied (say, if you want a WvString as a function parameter and don't intend on modifying it), use a WvStringParm. WvStringParms are more-or-less the same as WvStrings, but they don't copy char*s, and they don't have an edit() function.
To change the contents of a WvString, you need to run its edit() member function, which executes unique() and then returns a char* pointer to the WvString contents. WvStrings will generally convert to const char*s when needed, but if you need to force a conversion (in case the function can't decide what type it wants, like printf()), use the cstr() member function.
Be warned that some unscrupulous functions (such as strchr()) return char*s even though they take const char*s, so it is possible to edit a non-unique WvString (and hence the original WvString). These cases are pretty rare, but they occur.