always return (owned or non-owned, depending on build) wxScopedCharBuffer from utf8_str() and ToUTF8()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59945 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -372,19 +372,13 @@ const char *p = s.ToUTF8();
|
||||
puts(p); // or call any other function taking const char *
|
||||
@endcode
|
||||
does @b not work because the temporary buffer returned by wxString::ToUTF8() is
|
||||
destroyed and @c p is left pointing nowhere. To correct this you may use
|
||||
destroyed and @c p is left pointing nowhere. To correct this you should use
|
||||
@code
|
||||
wxCharBuffer p(s.ToUTF8());
|
||||
const wxScopedCharBuffer p(s.ToUTF8());
|
||||
puts(p);
|
||||
@endcode
|
||||
which does work but results in an unnecessary copy of string data in the build
|
||||
configurations when wxString::ToUTF8() returns the pointer to internal string buffer.
|
||||
If this inefficiency is important you may write
|
||||
@code
|
||||
const wxUTF8Buf p(s.ToUTF8());
|
||||
puts(p);
|
||||
@endcode
|
||||
where @c wxUTF8Buf is the type corresponding to the real return type of wxString::ToUTF8().
|
||||
which does work.
|
||||
|
||||
Similarly, wxWX2WCbuf can be used for the return type of wxString::wc_str().
|
||||
But, once again, none of these cryptic types is really needed if you just pass
|
||||
the return value of any of the functions mentioned in this section to another
|
||||
|
Reference in New Issue
Block a user