This tiny class allows to conveniently access the wxString internal buffer as a writable pointer without any risk of forgetting to restore the string to the usable state later.

For example, assuming you have a low-level OS function called GetMeaningOfLifeAsString(char *) returning the value in the provided buffer (which must be writable, of course) you might call it like this:

    wxString theAnswer;
    GetMeaningOfLifeAsString(wxStringBuffer(theAnswer, 1024));
    if ( theAnswer != "42" )
        wxLogError("Something is very wrong!");

Note that the exact usage of this depends on whether on not wxUSE_STL is enabled. If wxUSE_STL is enabled, wxStringBuffer creates a seperate empty character buffer, and if wxUSE_STL is disabled, it uses GetWriteBuf() from wxString, keeping the same buffer wxString uses intact. In other words, relying on wxStringBuffer containing the old wxString data is probably not a good idea if you want to build your program in both with and without wxUSE_STL.

Derived from


Include files



wxStringBuffer(const wxString& str, size_t len)

Constructs a writable string buffer object associated with the given string and containing enough space for at least len characters. Basically, this is equivalent to calling GetWriteBuf and saving the result.



Restores the string passed to the constructor to the usable state by calling UngetWriteBuf on it.

wxStringBuffer::operator wxChar *

wxChar * operator wxChar *(void)

Returns the writable pointer to a buffer of the size at least equal to the length specified in the constructor.

ymasuda 平成17年11月19日