no changes, just clarified meaning of various conversion functions in a comment
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -1526,11 +1526,53 @@ public: | ||||
|       { return at(n); } | ||||
| #endif // size_t != unsigned int | ||||
|  | ||||
|     // explicit conversion to C string (use this with printf()!) | ||||
|  | ||||
|     /* | ||||
|         Overview of wxString conversions, implicit and explicit: | ||||
|  | ||||
|         - wxString has a std::[w]string-like c_str() method, however it does | ||||
|           not return a C-style string directly but instead returns wxCStrData | ||||
|           helper object which is convertible to either "char *" narrow string | ||||
|           or "wchar_t *" wide string. Usually the correct conversion will be | ||||
|           applied by the compiler automatically but if this doesn't happen you | ||||
|           need to explicitly choose one using wxCStrData::AsChar() or AsWChar() | ||||
|           methods or another wxString conversion function. | ||||
|  | ||||
|         - One of the places where the conversion does *NOT* happen correctly is | ||||
|           when c_str() is passed to a vararg function such as printf() so you | ||||
|           must *NOT* use c_str() with them. Either use wxPrintf() (all wx | ||||
|           functions do handle c_str() correctly, even if they appear to be | ||||
|           vararg (but they're not, really)) or add an explicit AsChar() or, if | ||||
|           compatibility with previous wxWidgets versions is important, add a | ||||
|           cast to "const char *". | ||||
|  | ||||
|         - In non-STL mode only, wxString is also implicitly convertible to | ||||
|           wxCStrData. The same warning as above applies. | ||||
|  | ||||
|         - c_str() is polymorphic as it can be converted to either narrow or | ||||
|           wide string. If you explicitly need one or the other, choose to use | ||||
|           mb_str() (for narrow) or wc_str() (for wide) instead. Notice that | ||||
|           these functions can return either the pointer to string directly (if | ||||
|           this is what the string uses internally) or a temporary buffer | ||||
|           containing the string and convertible to it. Again, conversion will | ||||
|           usually be done automatically by the compiler but beware of the | ||||
|           vararg functions: you need an explicit cast when using them. | ||||
|  | ||||
|         - There are also non-const versions of mb_str() and wc_str() called | ||||
|           char_str() and wchar_str(). They are only meant to be used with | ||||
|           non-const-correct functions and they always return buffers. | ||||
|  | ||||
|         - Finally wx_str() returns whatever string representation is used by | ||||
|           wxString internally. It may be either a narrow or wide string | ||||
|           depending on wxWidgets build mode but it will always be a raw pointer | ||||
|           (and not a buffer). | ||||
|      */ | ||||
|  | ||||
|     // explicit conversion to wxCStrData | ||||
|     wxCStrData c_str() const { return wxCStrData(this); } | ||||
|     wxCStrData data() const { return c_str(); } | ||||
|  | ||||
|     // implicit conversion to C string | ||||
|     // implicit conversion to wxCStrData | ||||
|     operator wxCStrData() const { return c_str(); } | ||||
|  | ||||
|     // the first two operators conflict with operators for conversion to | ||||
|   | ||||
		Reference in New Issue
	
	Block a user