1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxStringBuffer, wxString
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
13 String class for passing textual data to or receiving it from wxWidgets.
16 While the use of wxString is unavoidable in wxWidgets program, you are
17 encouraged to use the standard string classes @c std::string or @c
18 std::wstring in your applications and convert them to and from wxString
19 only when interacting with wxWidgets.
22 wxString is a class representing a Unicode character string but with
23 methods taking or returning both @c wchar_t wide characters and @c wchar_t*
24 wide strings and traditional @c char characters and @c char* strings. The
25 dual nature of wxString API makes it simple to use in all cases and,
26 importantly, allows the code written for either ANSI or Unicode builds of
27 the previous wxWidgets versions to compile and work correctly with the
28 single unified Unicode build of wxWidgets 3.0. It is also mostly
29 transparent when using wxString with the few exceptions described below.
32 @section string_api API overview
34 wxString tries to be similar to both @c std::string and @c std::wstring and
35 can mostly be used as either class. It provides practically all of the
36 methods of these classes, which behave exactly the same as in the standard
37 C++, and so are not documented here (please see any standard library
38 documentation, for example http://en.cppreference.com/w/cpp/string for more
41 In addition to these standard methods, wxString adds functions dealing with
42 the conversions between different string encodings, described below, as
43 well as many extra helpers such as functions for formatted output
44 (Printf(), Format(), ...), case conversion (MakeUpper(), Capitalize(), ...)
45 and various others (Trim(), StartsWith(), Matches(), ...). All of the
46 non-standard methods follow wxWidgets "CamelCase" naming convention and are
49 Notice that some wxString methods exist in several versions for
50 compatibility reasons. For example all of length(), Length() and Len() are
51 provided. In such cases it is recommended to use the standard string-like
52 method, i.e. length() in this case.
55 @section string_conv Converting to and from wxString
57 wxString can be created from:
58 - ASCII string guaranteed to contain only 7 bit characters using
59 wxString::FromAscii().
60 - Narrow @c char* string in the current locale encoding using implicit
61 wxString::wxString(const char*) constructor.
62 - Narrow @c char* string in UTF-8 encoding using wxString::FromUTF8().
63 - Narrow @c char* string in the given encoding using
64 wxString::wxString(const char*, const wxMBConv&) constructor passing a
65 wxCSConv corresponding to the encoding as the second argument.
66 - Standard @c std::string using implicit wxString::wxString(const
67 std::string&) constructor. Notice that this constructor supposes that
68 the string contains data in the current locale encoding, use FromUTF8()
69 or the constructor taking wxMBConv if this is not the case.
70 - Wide @c wchar_t* string using implicit wxString::wxString(const
71 wchar_t*) constructor.
72 - Standard @c std::wstring using implicit wxString::wxString(const
73 std::wstring&) constructor.
75 Notice that many of the constructors are implicit, meaning that you don't
76 even need to write them at all to pass the existing string to some
77 wxWidgets function taking a wxString.
79 Similarly, wxString can be converted to:
80 - ASCII string using wxString::ToAscii(). This is a potentially
81 destructive operation as all non-ASCII string characters are replaced
82 with a placeholder character.
83 - String in the current locale encoding implicitly or using c_str() or
84 mb_str() methods. This is a potentially destructive operation as an @e
85 empty string is returned if the conversion fails.
86 - String in UTF-8 encoding using wxString::utf8_str().
87 - String in any given encoding using mb_str() with the appropriate
88 wxMBConv object. This is also a potentially destructive operation.
89 - Standard @c std::string using wxString::ToStdString(). The contents
90 of the returned string use the current locale encoding, so this
91 conversion is potentially destructive as well.
92 - Wide C string using wxString::wc_str().
93 - Standard @c std::wstring using wxString::ToStdWstring().
95 @note If you built wxWidgets with @c wxUSE_STL set to 1, the implicit
96 conversions to both narrow and wide C strings are disabled and replaced
97 with implicit conversions to @c std::string and @c std::wstring.
99 Please notice that the conversions marked as "potentially destructive"
100 above can result in loss of data if their result is not checked, so you
101 need to verify that converting the contents of a non-empty Unicode string
102 to a non-UTF-8 multibyte encoding results in non-empty string. The simplest
103 and best way to ensure that the conversion never fails is to always use
107 @section string_gotchas Traps for the unwary
109 As mentioned above, wxString tries to be compatible with both narrow and
110 wide standard string classes and mostly does it transparently, but there
113 @subsection string_gotchas_element String element access
115 Some problems are caused by wxString::operator[]() which returns an object
116 of a special proxy class allowing to assign either a simple @c char or a @c
117 wchar_t to the given index. Because of this, the return type of this
118 operator is neither @c char nor @c wchar_t nor a reference to one of these
119 types but wxUniCharRef which is not a primitive type and hence can't be
120 used in the @c switch statement. So the following code does @e not compile
131 switch ( s[n].GetValue() ) {
135 instead. Alternatively, you can use an explicit cast:
137 switch ( static_cast<char>(s[n]) ) {
141 but notice that this will result in an assert failure if the character at
142 the given position is not representable as a single @c char in the current
143 encoding, so you may want to cast to @c int instead if non-ASCII values can
146 Another consequence of this unusual return type arises when it is used with
147 template deduction or C++11 @c auto keyword. Unlike with the normal
148 references which are deduced to be of the referenced type, the deduced type
149 for wxUniCharRef is wxUniCharRef itself. This results in potentially
150 unexpected behaviour, for example:
154 c = 'x'; // Modifies the string!
155 wxASSERT( s == "xbc" );
157 Due to this, either explicitly specify the variable type:
160 c = 'x'; // Doesn't modify the string any more.
161 wxASSERT( s == "abc" );
163 or explicitly convert the return value:
165 auto c = s[0].GetValue();
166 c = 'x'; // Doesn't modify the string neither.
167 wxASSERT( s == "abc" );
171 @subsection string_gotchas_conv Conversion to C string
173 A different class of problems happens due to the dual nature of the return
174 value of wxString::c_str() method, which is also used for implicit
175 conversions. The result of calls to this method is convertible to either
176 narrow @c char* string or wide @c wchar_t* string and so, again, has
177 neither the former nor the latter type. Usually, the correct type will be
178 chosen depending on how you use the result but sometimes the compiler can't
179 choose it because of an ambiguity, e.g.:
181 // Some non-wxWidgets functions existing for both narrow and wide
183 void dump_text(const char* text); // Version (1)
184 void dump_text(const wchar_t* text); // Version (2)
187 dump_text(s); // ERROR: ambiguity.
188 dump_text(s.c_str()); // ERROR: still ambiguous.
190 In this case you need to explicitly convert to the type that you need to
191 use or use a different, non-ambiguous, conversion function (which is
192 usually the best choice):
194 dump_text(static_cast<const char*>(s)); // OK, calls (1)
195 dump_text(static_cast<const wchar_t*>(s.c_str())); // OK, calls (2)
196 dump_text(s.mb_str()); // OK, calls (1)
197 dump_text(s.wc_str()); // OK, calls (2)
198 dump_text(s.wx_str()); // OK, calls ???
201 @subsection string_vararg Using wxString with vararg functions
203 A special subclass of the problems arising due to the polymorphic nature of
204 wxString::c_str() result type happens when using functions taking an
205 arbitrary number of arguments, such as the standard @c printf(). Due to the
206 rules of the C++ language, the types for the "variable" arguments of such
207 functions are not specified and hence the compiler cannot convert wxString
208 objects, or the objects returned by wxString::c_str(), to these unknown
209 types automatically. Hence neither wxString objects nor the results of most
210 of the conversion functions can be passed as vararg arguments:
212 // ALL EXAMPLES HERE DO NOT WORK, DO NOT USE THEM!
213 printf("Don't do this: %s", s);
214 printf("Don't do that: %s", s.c_str());
215 printf("Nor even this: %s", s.mb_str());
216 wprintf("And even not always this: %s", s.wc_str());
218 Instead you need to either explicitly cast to the needed type:
220 // These examples work but are not the best solution, see below.
221 printf("You can do this: %s", static_cast<const char*>(s));
222 printf("Or this: %s", static_cast<const char*>(s.c_str()));
223 printf("And this: %s", static_cast<const char*>(s.mb_str()));
224 wprintf("Or this: %s", static_cast<const wchar_t*>(s.wc_str()));
226 But a better solution is to use wxWidgets-provided functions, if possible,
227 as is the case for @c printf family of functions:
229 // This is the recommended way.
230 wxPrintf("You can do just this: %s", s);
231 wxPrintf("And this (but it is redundant): %s", s.c_str());
232 wxPrintf("And this (not using Unicode): %s", s.mb_str());
233 wxPrintf("And this (always Unicode): %s", s.wc_str());
235 Notice that wxPrintf() replaces both @c printf() and @c wprintf() and
236 accepts wxString objects, results of c_str() calls but also @c char* and
237 @c wchar_t* strings directly.
239 wxWidgets provides wx-prefixed equivalents to all the standard vararg
240 functions and a few more, notably wxString::Format(), wxLogMessage(),
241 wxLogError() and other log functions. But if you can't use one of those
242 functions and need to pass wxString objects to non-wx vararg functions, you
243 need to use the explicit casts as explained above.
246 @section string_performance Performance characteristics
248 wxString uses @c std::basic_string internally to store its content (unless
249 this is not supported by the compiler or disabled specifically when
250 building wxWidgets) and it therefore inherits many features from @c
251 std::basic_string. In particular, most modern implementations of @c
252 std::basic_string are thread-safe and don't use reference counting (making
253 copying large strings potentially expensive) and so wxString has the same
256 By default, wxString uses @c std::basic_string specialized for the
257 platform-dependent @c wchar_t type, meaning that it is not memory-efficient
258 for ASCII strings, especially under Unix platforms where every ASCII
259 character, normally fitting in a byte, is represented by a 4 byte @c
262 It is possible to build wxWidgets with @c wxUSE_UNICODE_UTF8 set to 1 in
263 which case an UTF-8-encoded string representation is stored in @c
264 std::basic_string specialized for @c char, i.e. the usual @c std::string.
265 In this case the memory efficiency problem mentioned above doesn't arise
266 but run-time performance of many wxString methods changes dramatically, in
267 particular accessing the N-th character of the string becomes an operation
268 taking O(N) time instead of O(1), i.e. constant, time by default. Thus, if
269 you do use this so called UTF-8 build, you should avoid using indices to
270 access the strings whenever possible and use the iterators instead. As an
271 example, traversing the string using iterators is an O(N), where N is the
272 string length, operation in both the normal ("wchar_t") and UTF-8 builds
273 but doing it using indices becomes O(N^2) in UTF-8 case meaning that simply
274 checking every character of a reasonably long (e.g. a couple of millions
275 elements) string can take an unreasonably long time.
277 However, if you do use iterators, UTF-8 build can be a better choice than
278 the default build, especially for the memory-constrained embedded systems.
279 Notice also that GTK+ and DirectFB use UTF-8 internally, so using this
280 build not only saves memory for ASCII strings but also avoids conversions
281 between wxWidgets and the underlying toolkit.
284 @section string_index Index of the member groups
286 Links for quick access to the various categories of wxString functions:
287 - @ref_member_group{ctor, Constructors and assignment operators}
288 - @ref_member_group{length, Length functions}
289 - @ref_member_group{ch_access, Character access functions}
290 - @ref_member_group{conv, Conversions functions}
291 - @ref_member_group{concat, Concatenation functions}
292 - @ref_member_group{cmp, Comparison functions}
293 - @ref_member_group{substring, Substring extraction functions}
294 - @ref_member_group{caseconv, Case conversion functions}
295 - @ref_member_group{search, Searching and replacing functions}
296 - @ref_member_group{numconv, Conversion to numbers functions}
297 - @ref_member_group{fmt, Formatting and printing functions}
298 - @ref_member_group{mem, Memory management functions}
299 - @ref_member_group{misc, Miscellaneous functions}
300 - @ref_member_group{iter, Iterator interface functions}
301 - @ref_member_group{stl, STL interface functions}
310 @see @ref overview_string, @ref overview_unicode,
311 @ref group_funcmacro_string "String-related functions", wxUString,
312 wxCharBuffer, wxUniChar, wxStringTokenizer, wxStringBuffer, wxStringBufferLength
320 Types used with wxString.
323 typedef wxUniChar value_type
;
324 typedef wxUniChar char_type
;
325 typedef wxUniCharRef reference
;
326 typedef wxChar
* pointer
;
327 typedef const wxChar
* const_pointer
;
328 typedef size_t size_type
;
329 typedef wxUniChar const_reference
;
334 @member_group_name{ctor, Constructors and assignment operators}
336 A string may be constructed either from a C string, (some number of copies of)
337 a single character or a wide (Unicode) string. For all constructors (except the
338 default which creates an empty string) there is also a corresponding assignment
341 See also the assign() STL-like function.
351 Creates a string from another string.
352 Just increases the ref count by 1.
354 wxString(const wxString
& stringSrc
);
357 Construct a string consisting of @a nRepeat copies of ch.
359 wxString(wxUniChar ch
, size_t nRepeat
= 1);
362 Construct a string consisting of @a nRepeat copies of ch.
364 wxString(wxUniCharRef ch
, size_t nRepeat
= 1);
367 Construct a string consisting of @a nRepeat copies of ch
368 converted to Unicode using the current locale encoding.
370 wxString(char ch
, size_t nRepeat
= 1);
373 Construct a string consisting of @a nRepeat copies of ch.
375 wxString(wchar_t ch
, size_t nRepeat
= 1);
378 Constructs a string from the string literal @a psz using
379 the current locale encoding to convert it to Unicode (wxConvLibc).
381 wxString(const char *psz
);
384 Constructs a string from the string literal @a psz using
385 @a conv to convert it Unicode.
387 wxString(const char *psz
, const wxMBConv
& conv
);
390 Constructs a string from the first @a nLength character of the string literal @a psz using
391 the current locale encoding to convert it to Unicode (wxConvLibc).
393 wxString(const char *psz
, size_t nLength
);
396 Constructs a string from the first @a nLength character of the string literal @a psz using
397 @a conv to convert it Unicode.
399 wxString(const char *psz
, const wxMBConv
& conv
, size_t nLength
);
402 Constructs a string from the string literal @a pwz.
404 wxString(const wchar_t *pwz
);
407 Constructs a string from the first @a nLength characters of the string literal @a pwz.
409 wxString(const wchar_t *pwz
, size_t nLength
);
412 Constructs a string from @a buf using the using the current locale
413 encoding to convert it to Unicode.
415 wxString(const wxCharBuffer
& buf
);
418 Constructs a string from @a buf.
420 wxString(const wxWCharBuffer
& buf
);
423 Constructs a string from @a str using the using the current locale encoding
424 to convert it to Unicode (wxConvLibc).
428 wxString(const std::string
& str
);
431 Constructs a string from @a str.
435 wxString(const std::wstring
& str
);
440 Note that this is not virtual, so wxString must not be inherited from.
445 Assignment: see the relative wxString constructor.
447 wxString
operator =(const wxString
& str
);
450 Assignment: see the relative wxString constructor.
452 wxString
operator =(wxUniChar c
);
459 @member_group_name{length, String length}
461 These functions return the string length and/or check whether the string
464 See also the length(), size() or empty() STL-like functions.
470 Returns the length of the string.
475 Returns the length of the string (same as Len).
476 This is a wxWidgets 1.xx compatibility function; you should not use it in new
479 size_t Length() const;
482 Returns @true if the string is empty.
484 bool IsEmpty() const;
487 Returns @true if the string is empty (same as wxString::IsEmpty).
488 This is a wxWidgets 1.xx compatibility function; you should not use it in new
494 Empty string is @false, so !string will only return @true if the
499 bool operator!() const;
506 @member_group_name{ch_access, Character access}
508 Many functions below take a character index in the string.
509 As with C strings and arrays, the indices start from 0, so the first character
510 of a string is string[0]. An attempt to access a character beyond the end of the
511 string (which may even be 0 if the string is empty) will provoke an assert
512 failure in @ref overview_debugging "debug builds", but no checks are
513 done in release builds.
518 Returns the character at position @a n (read-only).
520 wxUniChar
GetChar(size_t n
) const;
523 wxWidgets compatibility conversion. Same as c_str().
525 const wxCStrData
GetData() const;
528 Returns a reference to the character at position @a n.
530 wxUniCharRef
GetWritableChar(size_t n
);
533 Returns a writable buffer of at least @a len bytes.
535 It returns a pointer to a new memory block, and the existing data will not be copied.
536 Call UngetWriteBuf() as soon as possible to put the string back into a reasonable state.
538 This method is deprecated, please use wxStringBuffer or wxStringBufferLength instead.
540 wxStringCharType
* GetWriteBuf(size_t len
);
543 Puts the string back into a reasonable state (in which it can be used
544 normally), after GetWriteBuf() was called.
546 The version of the function without the @a len parameter will calculate the
547 new string length itself assuming that the string is terminated by the first
548 @c NUL character in it while the second one will use the specified length
549 and thus is the only version which should be used with the strings with
550 embedded @c NULs (it is also slightly more efficient as @c strlen()
551 doesn't have to be called).
553 This method is deprecated, please use wxStringBuffer or wxStringBufferLength instead.
555 void UngetWriteBuf();
560 void UngetWriteBuf(size_t len
);
563 Sets the character at position @e n.
565 void SetChar(size_t n
, wxUniChar ch
);
568 Returns the last character.
570 This is a wxWidgets 1.xx compatibility function;
571 you should not use it in new code.
573 wxUniChar
Last() const;
576 Returns a reference to the last character (writable).
578 This is a wxWidgets 1.xx compatibility function;
579 you should not use it in new code.
584 Returns the @a i-th character of the string.
586 wxUniChar
operator [](size_t i
) const;
589 Returns a writable reference to the @a i-th character of the string.
591 wxUniCharRef
operator [](size_t i
);
597 @member_group_name{conv, Conversions}
599 This section contains both implicit and explicit conversions to C style
600 strings. Although implicit conversion is quite convenient, you are advised
601 to use wc_str() for the sake of clarity.
606 Returns a lightweight intermediate class which is in turn implicitly
607 convertible to both @c const @c char* and to @c const @c wchar_t*.
608 Given this ambiguity it is mostly better to use wc_str(), mb_str() or
611 Please see the @ref overview_unicode for more information about it.
613 Note that the returned value is not convertible to @c char* or
614 @c wchar_t*, use char_str() or wchar_str() if you need to pass
615 string value to a function expecting non-const pointer.
617 @see wc_str(), utf8_str(), c_str(), mb_str(), fn_str()
619 wxCStrData
c_str() const;
622 Returns an object with string data that is implicitly convertible to
623 @c char* pointer. Note that any change to the returned buffer is lost and so
624 this function is only usable for passing strings to legacy libraries that
625 don't have const-correct API. Use wxStringBuffer if you want to modify
630 wxWritableCharBuffer
char_str(const wxMBConv
& conv
= wxConvLibc
) const;
633 Returns buffer of the specified type containing the string data.
635 This method is only useful in template code, otherwise you should
636 directly call mb_str() or wc_str() if you need to retrieve a narrow or
637 wide string from this wxString. The template parameter @a t should be
638 either @c char or @c wchar_t.
640 Notice that retrieving a char buffer in UTF-8 build will return the
641 internal string representation in UTF-8 while in wchar_t build the char
642 buffer will contain the conversion of the string to the encoding of the
643 current locale (and so can fail).
646 If non-@NULL, filled with the length of the returned buffer.
649 buffer containing the string contents in the specified type,
650 notice that it may be @NULL if the conversion failed (e.g. Unicode
651 string couldn't be converted to the current encoding when @a T is
654 template <typename T
>
655 wxCharTypeBuffer
<T
> tchar_str(size_t *len
= NULL
) const;
658 Returns a string representation suitable for passing to OS' functions
661 const wchar_t* fn_str() const;
666 const char* fn_str() const;
671 const wxCharBuffer
fn_str() const;
674 Returns the multibyte (C string) representation of the string
675 using @e conv's wxMBConv::cWC2MB method and returns wxCharBuffer.
677 @see wc_str(), utf8_str(), c_str(), wxMBConv
679 const wxCharBuffer
mb_str(const wxMBConv
& conv
= wxConvLibc
) const;
682 Converts the strings contents to UTF-8 and returns it either as a
683 temporary wxCharBuffer object or as a pointer to the internal
684 string contents in UTF-8 build.
686 @see wc_str(), c_str(), mb_str()
688 const wxScopedCharBuffer
utf8_str() const;
691 Converts the strings contents to the wide character representation
692 and returns it as a temporary wxWCharBuffer object (Unix and OS X)
693 or returns a pointer to the internal string contents in wide character
696 The macro wxWX2WCbuf is defined as the correct return type (without const).
698 @see utf8_str(), c_str(), mb_str(), fn_str(), wchar_str()
700 const wchar_t* wc_str() const;
705 const wxWCharBuffer
wc_str() const;
708 Returns an object with string data that is implicitly convertible to
709 @c char* pointer. Note that changes to the returned buffer may or may
710 not be lost (depending on the build) and so this function is only usable for
711 passing strings to legacy libraries that don't have const-correct API. Use
712 wxStringBuffer if you want to modify the string.
714 @see mb_str(), wc_str(), fn_str(), c_str(), char_str()
716 wxWritableWCharBuffer
wchar_str() const;
719 Explicit conversion to C string in the internal representation (either
720 wchar_t* or UTF-8-encoded char*, depending on the build).
722 const wxStringCharType
*wx_str() const;
725 Converts the string to an 8-bit string in ISO-8859-1 encoding in the
726 form of a wxCharBuffer (Unicode builds only).
728 This is a convenience method useful when storing binary data in
729 wxString. It should be used @em only for this purpose. It is only valid
730 to call this method on strings created using From8BitData().
734 @see wxString::From8BitData()
736 const wxScopedCharBuffer
To8BitData() const;
739 Converts the string to an ASCII, 7-bit string in the form of
740 a wxCharBuffer (Unicode builds only) or a C string (ANSI builds).
742 Note that this conversion is only lossless if the string contains only
743 ASCII characters as all the non-ASCII ones are replaced with the @c '_'
744 (underscore) character.
746 Use mb_str() or utf8_str() to convert to other encodings.
748 const char* ToAscii() const;
753 const wxCharBuffer
ToAscii() const;
756 Return the string as an std::string in current locale encoding.
758 Note that if the conversion of (Unicode) string contents to the current
759 locale fails, the return string will be empty. Be sure to check for
760 this to avoid silent data loss.
762 Instead of using this function it's also possible to write
767 s = std::string(wxs);
769 but using ToStdString() may make the code more clear.
773 std::string
ToStdString() const;
776 Return the string as an std::wstring.
778 Unlike ToStdString(), there is no danger of data loss when using this
783 std::wstring
ToStdWstring() const;
788 const wxScopedCharBuffer
ToUTF8() const;
794 @member_group_name{concat, Concatenation}
796 Almost anything may be concatenated (appended to) with a string!
798 Note that the various operator<<() overloads work as C++ stream insertion
799 operators. They insert the given value into the string.
800 Precision and format cannot be set using them. Use Printf() instead.
802 See also the insert() and append() STL-like functions.
807 Appends the string literal @a psz.
809 wxString
& Append(const char* psz
);
812 Appends the wide string literal @a pwz.
814 wxString
& Append(const wchar_t* pwz
);
817 Appends the string literal @a psz with max length @a nLen.
819 wxString
& Append(const char* psz
, size_t nLen
);
822 Appends the wide string literal @a psz with max length @a nLen.
824 wxString
& Append(const wchar_t* pwz
, size_t nLen
);
827 Appends the string @a s.
829 wxString
& Append(const wxString
& s
);
832 Appends the character @a ch @a count times.
834 wxString
&Append(wxUniChar ch
, size_t count
= 1u);
837 Prepends @a str to this string, returning a reference to this string.
839 wxString
& Prepend(const wxString
& str
);
842 Concatenation: returns a new string equal to the concatenation of the operands.
844 wxString
operator +(const wxString
& x
, const wxString
& y
);
849 wxString
operator +(const wxString
& x
, wxUniChar y
);
851 wxString
& operator<<(const wxString
& s
);
852 wxString
& operator<<(const char* psz
);
853 wxString
& operator<<(const wchar_t* pwz
);
854 wxString
& operator<<(const wxCStrData
& psz
);
855 wxString
& operator<<(char ch
);
856 wxString
& operator<<(unsigned char ch
);
857 wxString
& operator<<(wchar_t ch
);
858 wxString
& operator<<(const wxCharBuffer
& s
);
859 wxString
& operator<<(const wxWCharBuffer
& s
);
860 wxString
& operator<<(wxUniChar ch
);
861 wxString
& operator<<(wxUniCharRef ch
);
862 wxString
& operator<<(unsigned int ui
);
863 wxString
& operator<<(long l
);
864 wxString
& operator<<(unsigned long ul
);
865 wxString
& operator<<(wxLongLong_t ll
);
866 wxString
& operator<<(wxULongLong_t ul
);
867 wxString
& operator<<(float f
);
868 wxString
& operator<<(double d
);
871 Concatenation in place: the argument is appended to the string.
873 void operator +=(const wxString
& str
);
878 void operator +=(wxUniChar c
);
884 @member_group_name{cmp, Comparison}
886 The default comparison function Cmp() is case-sensitive and so is the default
887 version of IsSameAs(). For case insensitive comparisons you should use CmpNoCase()
888 or give a second parameter to IsSameAs(). This last function is maybe more
889 convenient if only equality of the strings matters because it returns a boolean
890 @true value if the strings are the same and not 0 (which is usually @false
893 Matches() is a poor man's regular expression matcher: it only understands
894 '*' and '?' metacharacters in the sense of DOS command line interpreter.
896 StartsWith() is helpful when parsing a line of text which should start
897 with some predefined prefix and is more efficient than doing direct string
898 comparison as you would also have to precalculate the length of the prefix.
900 See also the compare() STL-like function.
905 Case-sensitive comparison.
906 Returns a positive value if the string is greater than the argument,
907 zero if it is equal to it or a negative value if it is less than the
908 argument (same semantics as the standard @c strcmp() function).
910 @see CmpNoCase(), IsSameAs().
912 int Cmp(const wxString
& s
) const;
915 Case-insensitive comparison.
916 Returns a positive value if the string is greater than the argument,
917 zero if it is equal to it or a negative value if it is less than the
918 argument (same semantics as the standard @c strcmp() function).
920 @see Cmp(), IsSameAs().
922 int CmpNoCase(const wxString
& s
) const;
925 Test whether the string is equal to another string @a s.
927 The test is case-sensitive if @a caseSensitive is @true (default) or not if it is
930 @return @true if the string is equal to the other one, @false otherwise.
932 @see Cmp(), CmpNoCase()
934 bool IsSameAs(const wxString
& s
, bool caseSensitive
= true) const;
937 Test whether the string is equal to the single character @a ch.
939 The test is case-sensitive if @a caseSensitive is @true (default) or not if it is
942 @return @true if the string is equal to this character, @false otherwise.
944 @see Cmp(), CmpNoCase()
946 bool IsSameAs(wxUniChar ch
, bool caseSensitive
= true) const;
949 Returns @true if the string contents matches a mask containing '*' and '?'.
951 bool Matches(const wxString
& mask
) const;
954 This function can be used to test if the string starts with the specified
957 If it does, the function will return @true and put the rest of the string
958 (i.e. after the prefix) into @a rest string if it is not @NULL.
959 Otherwise, the function returns @false and doesn't modify the @a rest.
961 bool StartsWith(const wxString
& prefix
, wxString
*rest
= NULL
) const;
964 This function can be used to test if the string ends with the specified
965 @e suffix. If it does, the function will return @true and put the
966 beginning of the string before the suffix into @e rest string if it is not
967 @NULL. Otherwise, the function returns @false and doesn't
970 bool EndsWith(const wxString
& suffix
, wxString
*rest
= NULL
) const;
976 @member_group_name{substring, Substring extraction}
978 These functions allow you to extract a substring from the string. The
979 original string is not modified and the function returns the extracted
982 See also the at() and the substr() STL-like functions.
986 Returns a substring starting at @e first, with length @e count, or the rest of
987 the string if @a count is the default value.
989 wxString
Mid(size_t first
, size_t nCount
= wxString::npos
) const;
992 Returns the part of the string between the indices @a from and @a to
995 This is a wxWidgets 1.xx compatibility function, use Mid()
996 instead (but note that parameters have different meaning).
998 wxString
SubString(size_t from
, size_t to
) const;
1001 Same as Mid() (substring extraction).
1003 wxString
operator()(size_t start
, size_t len
) const;
1006 Returns the first @a count characters of the string.
1008 wxString
Left(size_t count
) const;
1011 Returns the last @a count characters.
1013 wxString
Right(size_t count
) const;
1016 Gets all the characters after the first occurrence of @e ch.
1017 Returns the empty string if @e ch is not found.
1019 wxString
AfterFirst(wxUniChar ch
) const;
1022 Gets all the characters after the last occurrence of @e ch.
1023 Returns the whole string if @e ch is not found.
1025 wxString
AfterLast(wxUniChar ch
) const;
1028 Gets all characters before the first occurrence of @e ch.
1029 Returns the whole string if @a ch is not found.
1031 @param ch The character to look for.
1032 @param rest Filled with the part of the string following the first
1033 occurrence of @a ch or cleared if it was not found. The same string
1034 is returned by AfterFirst() but it is more efficient to use this
1035 output parameter if both the "before" and "after" parts are needed
1036 than calling both functions one after the other. This parameter is
1037 available in wxWidgets version 2.9.2 and later only.
1038 @return Part of the string before the first occurrence of @a ch.
1040 wxString
BeforeFirst(wxUniChar ch
, wxString
*rest
= NULL
) const;
1043 Gets all characters before the last occurrence of @e ch.
1044 Returns the empty string if @a ch is not found.
1046 @param ch The character to look for.
1047 @param rest Filled with the part of the string following the last
1048 occurrence of @a ch or the copy of this string if it was not found.
1049 The same string is returned by AfterLast() but it is more efficient
1050 to use this output parameter if both the "before" and "after" parts
1051 are needed than calling both functions one after the other. This
1052 parameter is available in wxWidgets version 2.9.2 and later only.
1053 @return Part of the string before the last occurrence of @a ch.
1055 wxString
BeforeLast(wxUniChar ch
, wxString
*rest
= NULL
) const;
1061 @member_group_name{caseconv, Case conversion}
1063 The MakeXXX() variants modify the string in place, while the other functions
1064 return a new string which contains the original text converted to the upper or
1065 lower case and leave the original string unchanged.
1070 Return the copy of the string with the first string character in the
1071 upper case and the subsequent ones in the lower case.
1075 @see MakeCapitalized()
1077 wxString
Capitalize() const;
1080 Returns this string converted to the lower case.
1084 wxString
Lower() const;
1088 This is a wxWidgets 1.xx compatibility function; you should not use it in new
1094 Converts the first characters of the string to the upper case and all
1095 the subsequent ones to the lower case and returns the result.
1101 wxString
& MakeCapitalized();
1104 Converts all characters to lower case and returns the reference to the
1109 wxString
& MakeLower();
1112 Converts all characters to upper case and returns the reference to the
1117 wxString
& MakeUpper();
1120 Returns this string converted to upper case.
1124 wxString
Upper() const;
1127 The same as MakeUpper().
1129 This is a wxWidgets 1.xx compatibility function; you should not use it in new
1138 @member_group_name{search, Searching and replacing}
1140 These functions replace the standard @c strchr() and @c strstr()
1143 See also the find(), rfind(), replace() STL-like functions.
1148 Searches for the given character @a ch.
1149 Returns the position or @c wxNOT_FOUND if not found.
1151 int Find(wxUniChar ch
, bool fromEnd
= false) const;
1154 Searches for the given string @a sub.
1155 Returns the starting position or @c wxNOT_FOUND if not found.
1157 int Find(const wxString
& sub
) const;
1162 This is a wxWidgets 1.xx compatibility function;
1163 you should not use it in new code.
1165 int First(wxUniChar ch
) const;
1170 This is a wxWidgets 1.xx compatibility function;
1171 you should not use it in new code.
1173 int First(const wxString
& str
) const;
1176 Replace first (or all) occurrences of substring with another one.
1179 The string to search for replacing.
1181 The substitution string.
1183 If @true a global replace will be done (default), otherwise only the
1184 first occurrence will be replaced.
1186 Returns the number of replacements made.
1188 size_t Replace(const wxString
& strOld
, const wxString
& strNew
,
1189 bool replaceAll
= true);
1196 @member_group_name{numconv, Conversion to numbers}
1198 The string provides functions for conversion to signed and unsigned integer and
1199 floating point numbers.
1201 All functions take a pointer to the variable to put the numeric value
1202 in and return @true if the @b entire string could be converted to a
1203 number. Notice if there is a valid number in the beginning of the
1204 string, it is returned in the output parameter even if the function
1205 returns @false because there is more text following it.
1210 Attempts to convert the string to a floating point number.
1212 Returns @true on success (the number is stored in the location pointed to by
1213 @a val) or @false if the string does not represent such number (the value of
1214 @a val may still be modified in this case).
1216 Note that unlike ToCDouble() this function uses a localized version of
1217 @c wxStrtod() and thus needs as decimal point (and thousands separator) the
1218 locale-specific decimal point. Thus you should use this function only when
1219 you are sure that this string contains a floating point number formatted with
1220 the rules of the locale currently in use (see wxLocale).
1222 Also notice that even this function is locale-specific it does not
1223 support strings with thousands separators in them, even if the current
1224 locale uses digits grouping. You may use wxNumberFormatter::FromString()
1225 to parse such strings.
1227 Please refer to the documentation of the standard function @c strtod()
1228 for more details about the supported syntax.
1230 @see ToCDouble(), ToLong(), ToULong()
1232 bool ToDouble(double* val
) const;
1235 Variant of ToDouble() always working in "C" locale.
1237 Works like ToDouble() but unlike it this function expects the floating point
1238 number to be formatted always with the rules dictated by the "C" locale
1239 (in particular, the decimal point must be a dot), independently from the
1240 current application-wide locale (see wxLocale).
1242 @see ToDouble(), ToLong(), ToULong()
1244 bool ToCDouble(double* val
) const;
1247 Attempts to convert the string to a signed integer in base @a base.
1249 Returns @true on success in which case the number is stored in the location
1250 pointed to by @a val or @false if the string does not represent a
1251 valid number in the given base (the value of @a val may still be
1252 modified in this case).
1254 The value of @a base must be comprised between 2 and 36, inclusive, or
1255 be a special value 0 which means that the usual rules of @c C numbers are
1256 applied: if the number starts with @c 0x it is considered to be in base
1257 16, if it starts with @c 0 - in base 8 and in base 10 otherwise. Note
1258 that you may not want to specify the base 0 if you are parsing the numbers
1259 which may have leading zeroes as they can yield unexpected (to the user not
1260 familiar with C) results.
1262 Note that unlike ToCLong() this function uses a localized version of
1263 @c wxStrtol(). Thus you should use this function only when you are sure
1264 that this string contains an integer number formatted with
1265 the rules of the locale currently in use (see wxLocale).
1267 As with ToDouble(), this function does not support strings containing
1268 thousands separators even if the current locale uses digits grouping.
1269 You may use wxNumberFormatter::FromString() to parse such strings.
1271 Please refer to the documentation of the standard function @c strtol()
1272 for more details about the supported syntax.
1274 @see ToCDouble(), ToDouble(), ToULong()
1276 bool ToLong(long* val
, int base
= 10) const;
1279 Variant of ToLong() always working in "C" locale.
1281 Works like ToLong() but unlike it this function expects the integer
1282 number to be formatted always with the rules dictated by the "C" locale,
1283 independently from the current application-wide locale (see wxLocale).
1285 @see ToDouble(), ToLong(), ToULong()
1287 bool ToCLong(long* val
, int base
= 10) const;
1290 This is exactly the same as ToLong() but works with 64 bit integer numbers.
1292 Notice that currently it doesn't work (always returns @false) if parsing of 64
1293 bit numbers is not supported by the underlying C run-time library. Compilers
1294 with C99 support and Microsoft Visual C++ version 7 and higher do support this.
1296 @see ToLong(), ToULongLong()
1298 bool ToLongLong(wxLongLong_t
* val
, int base
= 10) const;
1301 Attempts to convert the string to an unsigned integer in base @a base.
1303 Returns @true on success in which case the number is stored in the
1304 location pointed to by @a val or @false if the string does not
1305 represent a valid number in the given base (the value of @a val may
1306 still be modified in this case).
1308 Please notice that this function behaves in the same way as the standard
1309 @c strtoul() and so it simply converts negative numbers to unsigned
1310 representation instead of rejecting them (e.g. -1 is returned as @c ULONG_MAX).
1312 See ToLong() for the more detailed description of the @a base parameter
1313 (and of the locale-specific behaviour of this function).
1315 @see ToCULong(), ToDouble(), ToLong()
1317 bool ToULong(unsigned long* val
, int base
= 10) const;
1320 Variant of ToULong() always working in "C" locale.
1322 Works like ToULong() but unlike it this function expects the integer
1323 number to be formatted always with the rules dictated by the "C" locale,
1324 independently from the current application-wide locale (see wxLocale).
1326 @see ToDouble(), ToLong(), ToULong()
1328 bool ToCULong(unsigned long* val
, int base
= 10) const;
1331 This is exactly the same as ToULong() but works with 64 bit integer
1334 Please see ToLongLong() for additional remarks.
1336 bool ToULongLong(wxULongLong_t
* val
, int base
= 10) const;
1342 @member_group_name{fmt, Formatting and printing}
1344 Both formatted versions (Printf/() and stream-like insertion operators
1345 exist (for basic types only).
1347 See also the static Format() and FormatV() functions.
1352 Similar to the standard function @e sprintf(). Returns the number of
1353 characters written, or an integer less than zero on error.
1354 Note that if @c wxUSE_PRINTF_POS_PARAMS is set to 1, then this function supports
1355 Unix98-style positional parameters:
1360 str.Printf(wxT("%d %d %d"), 1, 2, 3);
1361 // str now contains "1 2 3"
1363 str.Printf(wxT("%2$d %3$d %1$d"), 1, 2, 3);
1364 // str now contains "2 3 1"
1367 @note This function will use a safe version of @e vsprintf() (usually called
1368 @e vsnprintf()) whenever available to always allocate the buffer of correct
1369 size. Unfortunately, this function is not available on all platforms and the
1370 dangerous @e vsprintf() will be used then which may lead to buffer overflows.
1372 int Printf(const wxString
& pszFormat
, ...);
1375 Similar to vprintf. Returns the number of characters written, or an integer
1379 int PrintfV(const wxString
& pszFormat
, va_list argPtr
);
1385 @member_group_name{mem, Memory management}
1387 The following are "advanced" functions and they will be needed rarely.
1388 Alloc() and Shrink() are only interesting for optimization purposes.
1389 wxStringBuffer and wxStringBufferLength classes may be very useful when working
1390 with some external API which requires the caller to provide a writable buffer.
1392 See also the reserve() and resize() STL-like functions.
1397 Preallocate enough space for wxString to store @a nLen characters.
1399 Please note that this method does the same thing as the standard
1400 reserve() one and shouldn't be used in new code.
1402 This function may be used to increase speed when the string is
1403 constructed by repeated concatenation as in
1406 // delete all vowels from the string
1407 wxString DeleteAllVowels(const wxString& original)
1411 size_t len = original.length();
1415 for ( size_t n = 0; n < len; n++ )
1417 if ( strchr("aeuio", tolower(original[n])) == NULL )
1418 result += original[n];
1425 because it will avoid the need to reallocate string memory many times
1426 (in case of long strings). Note that it does not set the maximal length
1427 of a string -- it will still expand if more than @a nLen characters are
1428 stored in it. Also, it does not truncate the existing string (use
1429 Truncate() for this) even if its current length is greater than @a nLen.
1431 @return @true if memory was successfully allocated, @false otherwise.
1433 bool Alloc(size_t nLen
);
1436 Minimizes the string's memory. This can be useful after a call to
1437 Alloc() if too much memory were preallocated.
1442 Returns a deep copy of the string.
1444 That is, the returned string is guaranteed to not share data with this
1445 string when using reference-counted wxString implementation.
1447 This method is primarily useful for passing strings between threads
1448 (because wxString is not thread-safe). Unlike creating a copy using
1449 @c wxString(c_str()), Clone() handles embedded NULs correctly.
1453 wxString
Clone() const;
1456 Empties the string and frees memory occupied by it.
1467 @member_group_name{misc, Miscellaneous}
1469 Miscellaneous other string functions.
1474 Returns @true if target appears anywhere in wxString; else @false.
1476 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1478 bool Contains(const wxString
& str
) const;
1481 Makes the string empty, but doesn't free memory occupied by the string.
1488 Returns the number of occurrences of @e ch in the string.
1490 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1492 int Freq(wxUniChar ch
) const;
1495 Returns @true if the string contains only ASCII characters.
1496 See wxUniChar::IsAscii for more details.
1498 This is a wxWidgets 1.xx compatibility function; you should not use it in new
1501 bool IsAscii() const;
1504 Returns @true if the string is an integer (with possible sign).
1506 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1508 bool IsNumber() const;
1511 Returns @true if the string is a word.
1513 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1515 bool IsWord() const;
1518 Adds @a count copies of @a chPad to the beginning, or to the end of the
1519 string (the default).
1521 Removes spaces from the left or from the right (default).
1523 wxString
& Pad(size_t count
, wxUniChar chPad
= ' ', bool fromRight
= true);
1526 Removes all characters from the string starting at @a pos.
1527 Use Truncate() as a more readable alternative.
1529 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1531 wxString
& Remove(size_t pos
);
1534 Removes @a len characters from the string, starting at @a pos.
1536 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1538 wxString
& Remove(size_t pos
, size_t len
);
1541 Removes the last character.
1543 wxString
& RemoveLast(size_t n
= 1);
1546 Strip characters at the front and/or end.
1548 This is the same as Trim() except that it doesn't change this string.
1550 This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1552 wxString
Strip(stripType s
= trailing
) const;
1555 Removes white-space (space, tabs, form feed, newline and carriage return) from
1556 the left or from the right end of the string (right is default).
1558 wxString
& Trim(bool fromRight
= true);
1561 Truncate the string to the given length.
1563 wxString
& Truncate(size_t len
);
1571 @member_group_name{iter, Iterator interface}
1573 These methods return iterators to the beginning or end of the string.
1575 Please see any STL reference (e.g. http://www.cppreference.com/wiki/string/start)
1576 for their documentation.
1580 const_iterator
begin() const;
1582 const_iterator
end() const;
1585 const_reverse_iterator
rbegin() const;
1586 reverse_iterator
rbegin();
1587 const_reverse_iterator
rend() const;
1588 reverse_iterator
rend();
1595 @member_group_name{stl, STL interface}
1597 The supported STL functions are listed here.
1599 Please see any STL reference (e.g. http://www.cppreference.com/wiki/string/start)
1600 for their documentation.
1604 wxString
& append(const wxString
& str
, size_t pos
, size_t n
);
1605 wxString
& append(const wxString
& str
);
1606 wxString
& append(const char *sz
, size_t n
);
1607 wxString
& append(const wchar_t *sz
, size_t n
);
1608 wxString
& append(size_t n
, wxUniChar ch
);
1609 wxString
& append(const_iterator first
, const_iterator last
);
1611 wxString
& assign(const wxString
& str
, size_t pos
, size_t n
);
1612 wxString
& assign(const wxString
& str
);
1613 wxString
& assign(const char *sz
, size_t n
);
1614 wxString
& assign(const wchar_t *sz
, size_t n
);
1615 wxString
& assign(size_t n
, wxUniChar ch
);
1616 wxString
& assign(const_iterator first
, const_iterator last
);
1618 wxUniChar
at(size_t n
) const;
1619 wxUniCharRef
at(size_t n
);
1623 size_type
capacity() const;
1625 int compare(const wxString
& str
) const;
1626 int compare(size_t nStart
, size_t nLen
, const wxString
& str
) const;
1627 int compare(size_t nStart
, size_t nLen
,
1628 const wxString
& str
, size_t nStart2
, size_t nLen2
) const;
1629 int compare(size_t nStart
, size_t nLen
,
1630 const char* sz
, size_t nCount
= npos
) const;
1631 int compare(size_t nStart
, size_t nLen
,
1632 const wchar_t* sz
, size_t nCount
= npos
) const;
1634 wxCStrData
data() const;
1638 wxString
& erase(size_type pos
= 0, size_type n
= npos
);
1639 iterator
erase(iterator first
, iterator last
);
1640 iterator
erase(iterator first
);
1642 size_t find(const wxString
& str
, size_t nStart
= 0) const;
1643 size_t find(const char* sz
, size_t nStart
= 0, size_t n
= npos
) const;
1644 size_t find(const wchar_t* sz
, size_t nStart
= 0, size_t n
= npos
) const;
1645 size_t find(wxUniChar ch
, size_t nStart
= 0) const;
1646 size_t find_first_of(const char* sz
, size_t nStart
= 0) const;
1647 size_t find_first_of(const wchar_t* sz
, size_t nStart
= 0) const;
1648 size_t find_first_of(const char* sz
, size_t nStart
, size_t n
) const;
1649 size_t find_first_of(const wchar_t* sz
, size_t nStart
, size_t n
) const;
1650 size_t find_first_of(wxUniChar c
, size_t nStart
= 0) const;
1651 size_t find_last_of (const wxString
& str
, size_t nStart
= npos
) const;
1652 size_t find_last_of (const char* sz
, size_t nStart
= npos
) const;
1653 size_t find_last_of (const wchar_t* sz
, size_t nStart
= npos
) const;
1654 size_t find_last_of(const char* sz
, size_t nStart
, size_t n
) const;
1655 size_t find_last_of(const wchar_t* sz
, size_t nStart
, size_t n
) const;
1656 size_t find_last_of(wxUniChar c
, size_t nStart
= npos
) const;
1657 size_t find_first_not_of(const wxString
& str
, size_t nStart
= 0) const;
1658 size_t find_first_not_of(const char* sz
, size_t nStart
= 0) const;
1659 size_t find_first_not_of(const wchar_t* sz
, size_t nStart
= 0) const;
1660 size_t find_first_not_of(const char* sz
, size_t nStart
, size_t n
) const;
1661 size_t find_first_not_of(const wchar_t* sz
, size_t nStart
, size_t n
) const;
1662 size_t find_first_not_of(wxUniChar ch
, size_t nStart
= 0) const;
1663 size_t find_last_not_of(const wxString
& str
, size_t nStart
= npos
) const;
1664 size_t find_last_not_of(const char* sz
, size_t nStart
= npos
) const;
1665 size_t find_last_not_of(const wchar_t* sz
, size_t nStart
= npos
) const;
1666 size_t find_last_not_of(const char* sz
, size_t nStart
, size_t n
) const;
1667 size_t find_last_not_of(const wchar_t* sz
, size_t nStart
, size_t n
) const;
1669 wxString
& insert(size_t nPos
, const wxString
& str
);
1670 wxString
& insert(size_t nPos
, const wxString
& str
, size_t nStart
, size_t n
);
1671 wxString
& insert(size_t nPos
, const char *sz
, size_t n
);
1672 wxString
& insert(size_t nPos
, const wchar_t *sz
, size_t n
);
1673 wxString
& insert(size_t nPos
, size_t n
, wxUniChar ch
);
1674 iterator
insert(iterator it
, wxUniChar ch
);
1675 void insert(iterator it
, const_iterator first
, const_iterator last
);
1676 void insert(iterator it
, size_type n
, wxUniChar ch
);
1678 size_t length() const;
1680 size_type
max_size() const;
1682 void reserve(size_t sz
);
1683 void resize(size_t nSize
, wxUniChar ch
= '\0');
1685 wxString
& replace(size_t nStart
, size_t nLen
, const wxString
& str
);
1686 wxString
& replace(size_t nStart
, size_t nLen
, size_t nCount
, wxUniChar ch
);
1687 wxString
& replace(size_t nStart
, size_t nLen
,
1688 const wxString
& str
, size_t nStart2
, size_t nLen2
);
1689 wxString
& replace(size_t nStart
, size_t nLen
,
1690 const char* sz
, size_t nCount
);
1691 wxString
& replace(size_t nStart
, size_t nLen
,
1692 const wchar_t* sz
, size_t nCount
);
1693 wxString
& replace(size_t nStart
, size_t nLen
,
1694 const wxString
& s
, size_t nCount
);
1695 wxString
& replace(iterator first
, iterator last
, const wxString
& s
);
1696 wxString
& replace(iterator first
, iterator last
, const char* s
, size_type n
);
1697 wxString
& replace(iterator first
, iterator last
, const wchar_t* s
, size_type n
);
1698 wxString
& replace(iterator first
, iterator last
, size_type n
, wxUniChar ch
);
1699 wxString
& replace(iterator first
, iterator last
,
1700 const_iterator first1
, const_iterator last1
);
1701 wxString
& replace(iterator first
, iterator last
,
1702 const char *first1
, const char *last1
);
1703 wxString
& replace(iterator first
, iterator last
,
1704 const wchar_t *first1
, const wchar_t *last1
);
1706 size_t rfind(const wxString
& str
, size_t nStart
= npos
) const;
1707 size_t rfind(const char* sz
, size_t nStart
= npos
, size_t n
= npos
) const;
1708 size_t rfind(const wchar_t* sz
, size_t nStart
= npos
, size_t n
= npos
) const;
1709 size_t rfind(wxUniChar ch
, size_t nStart
= npos
) const;
1711 size_type
size() const;
1712 wxString
substr(size_t nStart
= 0, size_t nLen
= npos
) const;
1713 void swap(wxString
& str
);
1720 // Keep these functions separated from the other groups or Doxygen gets confused
1721 // -----------------------------------------------------------------------------
1724 An 'invalid' value for string index
1726 static const size_t npos
;
1729 This static function returns the string containing the result of calling
1730 Printf() with the passed parameters on it.
1732 @see FormatV(), Printf()
1734 static wxString
Format(const wxString
& format
, ...);
1737 This static function returns the string containing the result of calling
1738 PrintfV() with the passed parameters on it.
1740 @see Format(), PrintfV()
1742 static wxString
FormatV(const wxString
& format
, va_list argptr
);
1746 Converts given buffer of binary data from 8-bit string to wxString. In
1747 Unicode build, the string is interpreted as being in ISO-8859-1
1748 encoding. The version without @e len parameter takes NUL-terminated
1751 This is a convenience method useful when storing binary data in
1752 wxString. It should be used @em only for that purpose and only in
1753 conjunction with To8BitData(). Use mb_str() for conversion of character
1754 data to known encoding.
1758 @see wxString::To8BitData()
1760 static wxString
From8BitData(const char* buf
, size_t len
);
1761 static wxString
From8BitData(const char* buf
);
1766 Converts the string or character from an ASCII, 7-bit form
1767 to the native wxString representation.
1769 static wxString
FromAscii(const char* s
);
1770 static wxString
FromAscii(const unsigned char* s
);
1771 static wxString
FromAscii(const char* s
, size_t len
);
1772 static wxString
FromAscii(const unsigned char* s
, size_t len
);
1773 static wxString
FromAscii(char c
);
1777 Returns a string with the textual representation of the number in C
1780 Unlike FromDouble() the string returned by this function always uses
1781 the period character as decimal separator, independently of the current
1782 locale. Otherwise its behaviour is identical to the other function.
1788 static wxString
FromCDouble(double val
, int precision
= -1);
1791 Returns a string with the textual representation of the number.
1793 For the default value of @a precision, this function behaves as a
1794 simple wrapper for @code wxString::Format("%g", val) @endcode. If @a
1795 precision is positive (or zero), the @c %.Nf format is used with the
1796 given precision value.
1798 Notice that the string returned by this function uses the decimal
1799 separator appropriate for the current locale, e.g. @c "," and not a
1800 period in French locale. Use FromCDouble() if this is unwanted.
1803 The value to format.
1805 The number of fractional digits to use in or -1 to use the most
1806 appropriate format. This parameter is new in wxWidgets 2.9.2.
1812 static wxString
FromDouble(double val
, int precision
= -1);
1816 Converts C string encoded in UTF-8 to wxString.
1818 If @a s is not a valid UTF-8 string, an empty string is returned.
1820 Notice that when using UTF-8 wxWidgets build there is a more efficient
1821 alternative to this function called FromUTF8Unchecked() which, unlike
1822 this one, doesn't check that the input string is valid.
1826 static wxString
FromUTF8(const char* s
);
1827 static wxString
FromUTF8(const char* s
, size_t len
);
1832 Converts C string encoded in UTF-8 to wxString without checking its
1835 This method assumes that @a s is a valid UTF-8 sequence and doesn't do
1836 any validation (although an assert failure is triggered in debug builds
1837 if the string is invalid). Only use it if you are absolutely sure that
1838 @a s is a correct UTF-8 string (e.g. because it comes from another
1839 library using UTF-8) and if the performance matters, otherwise use
1840 slower (in UTF-8 build) but safer FromUTF8(). Passing a bad UTF-8
1841 string to this function will result in creating a corrupted wxString
1842 and all the subsequent operations on it will be undefined.
1846 static wxString
FromUTF8Unchecked(const char* s
);
1847 static wxString
FromUTF8Unchecked(const char* s
, size_t len
);
1855 Comparison operator for string types.
1857 inline bool operator==(const wxString
& s1
, const wxString
& s2
);
1858 inline bool operator!=(const wxString
& s1
, const wxString
& s2
);
1859 inline bool operator< (const wxString
& s1
, const wxString
& s2
);
1860 inline bool operator> (const wxString
& s1
, const wxString
& s2
);
1861 inline bool operator<=(const wxString
& s1
, const wxString
& s2
);
1862 inline bool operator>=(const wxString
& s1
, const wxString
& s2
);
1863 inline bool operator==(const wxString
& s1
, const wxCStrData
& s2
);
1864 inline bool operator==(const wxCStrData
& s1
, const wxString
& s2
);
1865 inline bool operator!=(const wxString
& s1
, const wxCStrData
& s2
);
1866 inline bool operator!=(const wxCStrData
& s1
, const wxString
& s2
);
1867 inline bool operator==(const wxString
& s1
, const wxWCharBuffer
& s2
);
1868 inline bool operator==(const wxWCharBuffer
& s1
, const wxString
& s2
);
1869 inline bool operator!=(const wxString
& s1
, const wxWCharBuffer
& s2
);
1870 inline bool operator!=(const wxWCharBuffer
& s1
, const wxString
& s2
);
1871 inline bool operator==(const wxString
& s1
, const wxCharBuffer
& s2
);
1872 inline bool operator==(const wxCharBuffer
& s1
, const wxString
& s2
);
1873 inline bool operator!=(const wxString
& s1
, const wxCharBuffer
& s2
);
1874 inline bool operator!=(const wxCharBuffer
& s1
, const wxString
& s2
);
1879 Comparison operators char types.
1881 inline bool operator==(const wxUniChar
& c
, const wxString
& s
);
1882 inline bool operator==(const wxUniCharRef
& c
, const wxString
& s
);
1883 inline bool operator==(char c
, const wxString
& s
);
1884 inline bool operator==(wchar_t c
, const wxString
& s
);
1885 inline bool operator==(int c
, const wxString
& s
);
1886 inline bool operator==(const wxString
& s
, const wxUniChar
& c
);
1887 inline bool operator==(const wxString
& s
, const wxUniCharRef
& c
);
1888 inline bool operator==(const wxString
& s
, char c
);
1889 inline bool operator==(const wxString
& s
, wchar_t c
);
1890 inline bool operator!=(const wxUniChar
& c
, const wxString
& s
);
1891 inline bool operator!=(const wxUniCharRef
& c
, const wxString
& s
);
1892 inline bool operator!=(char c
, const wxString
& s
);
1893 inline bool operator!=(wchar_t c
, const wxString
& s
);
1894 inline bool operator!=(int c
, const wxString
& s
);
1895 inline bool operator!=(const wxString
& s
, const wxUniChar
& c
);
1896 inline bool operator!=(const wxString
& s
, const wxUniCharRef
& c
);
1897 inline bool operator!=(const wxString
& s
, char c
);
1898 inline bool operator!=(const wxString
& s
, wchar_t c
);
1902 The global wxString instance of an empty string.
1903 Used extensively in the entire wxWidgets API.
1905 wxString wxEmptyString
;
1910 @class wxStringBufferLength
1912 This tiny class allows you to conveniently access the wxString internal buffer
1913 as a writable pointer without any risk of forgetting to restore the string to
1914 the usable state later, and allows the user to set the internal length of the string.
1916 For example, assuming you have a low-level OS function called
1917 @c "int GetMeaningOfLifeAsString(char *)" copying the value in the provided
1918 buffer (which must be writable, of course), and returning the actual length
1919 of the string, you might call it like this:
1923 wxStringBufferLength theAnswerBuffer(theAnswer, 1024);
1924 int nLength = GetMeaningOfLifeAsString(theAnswerBuffer);
1925 theAnswerBuffer.SetLength(nLength);
1926 if ( theAnswer != "42" )
1927 wxLogError("Something is very wrong!");
1930 Note that the exact usage of this depends on whether or not wxUSE_STL is
1931 enabled. If wxUSE_STL is enabled, wxStringBuffer creates a separate empty
1932 character buffer, and if wxUSE_STL is disabled, it uses GetWriteBuf() from
1933 wxString, keeping the same buffer wxString uses intact. In other words,
1934 relying on wxStringBuffer containing the old wxString data is not a good
1935 idea if you want to build your program both with and without wxUSE_STL.
1937 Note that wxStringBuffer::SetLength @b must be called before
1938 wxStringBufferLength destructs.
1943 class wxStringBufferLength
1947 Constructs a writable string buffer object associated with the given string
1948 and containing enough space for at least @a len characters.
1950 Basically, this is equivalent to calling wxString::GetWriteBuf and
1953 wxStringBufferLength(const wxString
& str
, size_t len
);
1956 Restores the string passed to the constructor to the usable state by calling
1957 wxString::UngetWriteBuf on it.
1959 ~wxStringBufferLength();
1962 Sets the internal length of the string referred to by wxStringBufferLength to
1963 @a nLength characters.
1965 Must be called before wxStringBufferLength destructs.
1967 void SetLength(size_t nLength
);
1970 Returns the writable pointer to a buffer of the size at least equal to the
1971 length specified in the constructor.
1973 wxChar
* operator wxChar
*();
1978 @class wxStringBuffer
1980 This tiny class allows you to conveniently access the wxString internal buffer
1981 as a writable pointer without any risk of forgetting to restore the string
1982 to the usable state later.
1984 For example, assuming you have a low-level OS function called
1985 @c "GetMeaningOfLifeAsString(char *)" returning the value in the provided
1986 buffer (which must be writable, of course) you might call it like this:
1990 GetMeaningOfLifeAsString(wxStringBuffer(theAnswer, 1024));
1991 if ( theAnswer != "42" )
1992 wxLogError("Something is very wrong!");
1995 Note that the exact usage of this depends on whether or not @c wxUSE_STL is
1996 enabled. If @c wxUSE_STL is enabled, wxStringBuffer creates a separate empty
1997 character buffer, and if @c wxUSE_STL is disabled, it uses GetWriteBuf() from
1998 wxString, keeping the same buffer wxString uses intact. In other words,
1999 relying on wxStringBuffer containing the old wxString data is not a good
2000 idea if you want to build your program both with and without @c wxUSE_STL.
2005 class wxStringBuffer
2009 Constructs a writable string buffer object associated with the given string
2010 and containing enough space for at least @a len characters.
2011 Basically, this is equivalent to calling wxString::GetWriteBuf() and
2014 wxStringBuffer(const wxString
& str
, size_t len
);
2017 Restores the string passed to the constructor to the usable state by calling
2018 wxString::UngetWriteBuf() on it.
2023 Returns the writable pointer to a buffer of the size at least equal to the
2024 length specified in the constructor.
2026 wxStringCharType
* operator wxStringCharType
*();
2030 /** @addtogroup group_funcmacro_string */
2034 Allows to extend a function with the signature:
2035 @code bool SomeFunc(const wxUniChar& c) @endcode
2036 which operates on a single character, to an entire wxString.
2038 E.g. if you want to check if an entire string contains only digits,
2041 if (wxStringCheck<wxIsdigit>(myString))
2042 ... // the entire string contains only digits!
2044 ... // at least one character of myString is not a digit
2047 @return @true if the given function returns a non-zero value for all
2048 characters of the @a val string.
2050 template<bool (T
)(const wxUniChar
& c
)>
2051 inline bool wxStringCheck(const wxString
& val
);