]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/wxstring.tex
added missing libraries to the requirements list
[wxWidgets.git] / docs / latex / wx / wxstring.tex
CommitLineData
a660d684
KB
1\section{\class{wxString}}\label{wxstring}
2
40b480c3 3wxString is a class representing a character string. Please see the
b0b96f66
VZ
4\helpref{wxString overview}{wxstringoverview} for more information about it.
5
6As explained there, wxString implements most of the methods of the std::string
7class.
8These standard functions are not documented in this manual, please see the
9\urlref{STL documentation}{http://www.cppreference.com/cppstl.html}).
99f09bc1 10The behaviour of all these functions is identical to the behaviour described
b0b96f66 11there.
99f09bc1 12
0aa35d19
VZ
13You may notice that wxString sometimes has many functions which do the same
14thing like, for example, \helpref{Length()}{wxstringlength},
15\helpref{Len()}{wxstringlen} and {\tt length()} which all return the string
16length. In all cases of such duplication the {\tt std::string}-compatible
17method ({\tt length()} in this case, always the lowercase version) should be
fc2171bd 18used as it will ensure smoother transition to {\tt std::string} when wxWidgets
0aa35d19
VZ
19starts using it instead of wxString.
20
b3324be2
JS
21\wxheading{Derived from}
22
23None
a660d684 24
954b8ae6
JS
25\wxheading{Include files}
26
27<wx/string.h>
28
20e85460
JS
29\wxheading{Predefined objects}
30
31Objects:
32
33{\bf wxEmptyString}
34
b3324be2
JS
35\wxheading{See also}
36
b0b96f66 37\helpref{wxString overview}{wxstringoverview}, \helpref{Unicode overview}{unicode}
a660d684 38
99f09bc1
VZ
39\latexignore{\rtfignore{\wxheading{Function groups}}}
40
d6718dd1 41
15d83f72 42\membersection{Constructors and assignment operators}\label{constructorsinwxstring}
99f09bc1 43
2edb0bde 44A string may be constructed either from a C string, (some number of copies of)
99f09bc1
VZ
45a single character or a wide (UNICODE) string. For all constructors (except the
46default which creates an empty string) there is also a corresponding assignment
47operator.
48
49\helpref{wxString}{wxstringconstruct}\\
50\helpref{operator $=$}{wxstringoperatorassign}\\
51\helpref{\destruct{wxString}}{wxstringdestruct}
52
d6718dd1 53
15d83f72 54\membersection{String length}\label{lengthfunctionsinwxstring}
99f09bc1
VZ
55
56These functions return the string length and check whether the string is empty
57or empty it.
58
59\helpref{Len}{wxstringlen}\\
60\helpref{IsEmpty}{wxstringisempty}\\
61\helpref{operator!}{wxstringoperatornot}\\
62\helpref{Empty}{wxstringempty}\\
63\helpref{Clear}{wxstringclear}
64
d6718dd1 65
15d83f72 66\membersection{Character access}\label{characteraccessinwxstring}
99f09bc1
VZ
67
68Many functions in this section take a character index in the string. As with C
69strings and/or arrays, the indices start from $0$, so the first character of a
70string is string[$0$]. Attempt to access a character beyond the end of the
2edb0bde 71string (which may be even $0$ if the string is empty) will provoke an assert
99f09bc1
VZ
72failure in \helpref{debug build}{debuggingoverview}, but no checks are done in
73release builds.
74
75This section also contains both implicit and explicit conversions to C style
76strings. Although implicit conversion is quite convenient, it is advised to use
77explicit \helpref{c\_str()}{wxstringcstr} method for the sake of clarity. Also
fd34e3a5 78see \helpref{overview}{wxstringadvices} for the cases where it is necessary to
99f09bc1
VZ
79use it.
80
81\helpref{GetChar}{wxstringgetchar}\\
82\helpref{GetWritableChar}{wxstringgetwritablechar}\\
83\helpref{SetChar}{wxstringsetchar}\\
84\helpref{Last}{wxstringlast}\\
85\helpref{operator []}{wxstringoperatorbracket}\\
86\helpref{c\_str}{wxstringcstr}\\
bd8465ff
VS
87\helpref{mb\_str}{wxstringmbstr}\\
88\helpref{wc\_str}{wxstringwcstr}\\
89\helpref{fn\_str}{wxstringfnstr}\\
99f09bc1
VZ
90\helpref{operator const char*}{wxstringoperatorconstcharpt}
91
d6718dd1 92
15d83f72 93\membersection{Concatenation}\label{concatenationinwxstring}
99f09bc1
VZ
94
95Anything may be concatenated (appended to) with a string. However, you can't
96append something to a C string (including literal constants), so to do this it
97should be converted to a wxString first.
98
99\helpref{operator \cinsert}{wxstringoperatorout}\\
100\helpref{operator $+=$}{wxstringplusequal}\\
101\helpref{operator $+$}{wxstringoperatorplus}\\
102\helpref{Append}{wxstringappend}\\
103\helpref{Prepend}{wxstringprepend}
104
d6718dd1 105
15d83f72 106\membersection{Comparison}\label{comparisoninwxstring}
99f09bc1
VZ
107
108The default comparison function \helpref{Cmp}{wxstringcmp} is case-sensitive and
109so is the default version of \helpref{IsSameAs}{wxstringissameas}. For case
110insensitive comparisons you should use \helpref{CmpNoCase}{wxstringcmpnocase} or
111give a second parameter to IsSameAs. This last function is may be more
112convenient if only equality of the strings matters because it returns a boolean
b0b96f66 113\true value if the strings are the same and not 0 (which is usually false in C)
f6bcfd97 114as {\tt Cmp()} does.
99f09bc1
VZ
115
116\helpref{Matches}{wxstringmatches} is a poor man's regular expression matcher:
117it only understands '*' and '?' metacharacters in the sense of DOS command line
118interpreter.
119
f6bcfd97
BP
120\helpref{StartsWith}{wxstringstartswith} is helpful when parsing a line of
121text which should start with some predefined prefix and is more efficient than
2edb0bde 122doing direct string comparison as you would also have to precalculate the
f6bcfd97
BP
123length of the prefix then.
124
99f09bc1
VZ
125\helpref{Cmp}{wxstringcmp}\\
126\helpref{CmpNoCase}{wxstringcmpnocase}\\
127\helpref{IsSameAs}{wxstringissameas}\\
f6bcfd97 128\helpref{Matches}{wxstringmatches}\\
3affcd07
VZ
129\helpref{StartsWith}{wxstringstartswith}\\
130\helpref{EndsWith}{wxstringendswith}
99f09bc1 131
d6718dd1 132
15d83f72 133\membersection{Substring extraction}\label{substringextractioninwxstring}
99f09bc1
VZ
134
135These functions allow to extract substring from this string. All of them don't
136modify the original string and return a new string containing the extracted
137substring.
138
139\helpref{Mid}{wxstringmid}\\
140\helpref{operator()}{wxstringoperatorparenth}\\
141\helpref{Left}{wxstringleft}\\
142\helpref{Right}{wxstringright}\\
143\helpref{BeforeFirst}{wxstringbeforefirst}\\
144\helpref{BeforeLast}{wxstringbeforelast}\\
145\helpref{AfterFirst}{wxstringafterfirst}\\
f6bcfd97 146\helpref{AfterLast}{wxstringafterlast}\\
3affcd07
VZ
147\helpref{StartsWith}{wxstringstartswith}\\
148\helpref{EndsWith}{wxstringendswith}
149
99f09bc1 150
d6718dd1 151
15d83f72 152\membersection{Case conversion}\label{caseconversioninwxstring}
99f09bc1
VZ
153
154The MakeXXX() variants modify the string in place, while the other functions
2edb0bde 155return a new string which contains the original text converted to the upper or
99f09bc1
VZ
156lower case and leave the original string unchanged.
157
158\helpref{MakeUpper}{wxstringmakeupper}\\
159\helpref{Upper}{wxstringupper}\\
160\helpref{MakeLower}{wxstringmakelower}\\
161\helpref{Lower}{wxstringlower}
162
d6718dd1 163
15d83f72 164\membersection{Searching and replacing}\label{searchingandreplacinginwxstring}
99f09bc1 165
40b480c3 166These functions replace the standard {\it strchr()} and {\it strstr()}
99f09bc1
VZ
167functions.
168
169\helpref{Find}{wxstringfind}\\
170\helpref{Replace}{wxstringreplace}
171
d6718dd1 172
15d83f72 173\membersection{Conversion to numbers}\label{conversiontonumbersinwxstring}
cd0b1709
VZ
174
175The string provides functions for conversion to signed and unsigned integer and
176floating point numbers. All three functions take a pointer to the variable to
b0b96f66 177put the numeric value in and return \true if the {\bf entire} string could be
cd0b1709
VZ
178converted to a number.
179
180\helpref{ToLong}{wxstringtolong}\\
b0b96f66 181\helpref{ToLongLong}{wxstringtolonglong}\\
cd0b1709 182\helpref{ToULong}{wxstringtoulong}\\
b0b96f66 183\helpref{ToULongLong}{wxstringtoulonglong}\\
cd0b1709
VZ
184\helpref{ToDouble}{wxstringtodouble}
185
d6718dd1 186
15d83f72 187\membersection{Writing values into the string}\label{writingintostringinwxstring}
99f09bc1
VZ
188
189Both formatted versions (\helpref{Printf}{wxstringprintf}) and stream-like
341e7d28
VZ
190insertion operators exist (for basic types only). Additionally, the
191\helpref{Format}{wxstringformat} function allows to use simply append
192formatted value to a string:
99f09bc1 193
341e7d28
VZ
194\begin{verbatim}
195 // the following 2 snippets are equivalent
196
197 wxString s = "...";
198 s += wxString::Format("%d", n);
199
200 wxString s;
201 s.Printf("...%d", n);
202\end{verbatim}
203
204\helpref{Format}{wxstringformat}\\
205\helpref{FormatV}{wxstringformatv}\\
99f09bc1
VZ
206\helpref{Printf}{wxstringprintf}\\
207\helpref{PrintfV}{wxstringprintfv}\\
40b480c3 208\helpref{operator \cinsert}{wxstringoperatorout}
99f09bc1 209
d6718dd1 210
15d83f72 211\membersection{Memory management}\label{memoryinwxstring}
99f09bc1 212
2edb0bde 213These are "advanced" functions and they will be needed quite rarely.
99f09bc1
VZ
214\helpref{Alloc}{wxstringalloc} and \helpref{Shrink}{wxstringshrink} are only
215interesting for optimization purposes.
24ad9318
VS
216\helpref{wxStringBuffer}{wxstringbuffer}
217and \helpref{wxStringBufferLength}{wxstringbufferlength} classes may be very
218useful when working with some external API which requires the caller to provide
219a writable buffer.
99f09bc1
VZ
220
221\helpref{Alloc}{wxstringalloc}\\
222\helpref{Shrink}{wxstringshrink}\\
24ad9318
VS
223\helpref{wxStringBuffer}{wxstringbuffer}\\
224\helpref{wxStringBufferLength}{wxstringbufferlength}
99f09bc1 225
d6718dd1 226
15d83f72 227\membersection{Miscellaneous}\label{miscellaneousinwxstring}
99f09bc1
VZ
228
229Other string functions.
230
231\helpref{Trim}{wxstringtrim}\\
b0b96f66
VZ
232\helpref{Truncate}{wxstringtruncate}\\
233\helpref{Pad}{wxstringpad}
99f09bc1 234
d6718dd1 235
15d83f72 236\membersection{wxWidgets 1.xx compatibility functions}\label{backwardcompatibilityinwxstring}
99f09bc1 237
fc2171bd 238These functions are deprecated, please consider using new wxWidgets 2.0
99f09bc1
VZ
239functions instead of them (or, even better, std::string compatible variants).
240
b0b96f66 241% keep ordered alphabetically
99f09bc1 242\helpref{CompareTo}{wxstringcompareto}\\
b0b96f66
VZ
243\helpref{Contains}{wxstringcontains}\\
244\helpref{First}{wxstringfirst}\\
99f09bc1 245\helpref{Freq}{wxstringfreq}\\
99f09bc1 246\helpref{Index}{wxstringindex}\\
99f09bc1 247\helpref{IsAscii}{wxstringisascii}\\
b0b96f66 248\helpref{IsNull}{wxstringisnull}\\
99f09bc1 249\helpref{IsNumber}{wxstringisnumber}\\
b0b96f66
VZ
250\helpref{IsWord}{wxstringisword}\\
251\helpref{Last}{wxstringlast}\\
252\helpref{Length}{wxstringlength}\\
253\helpref{LowerCase}{wxstringlowercase}\\
254\helpref{Remove}{wxstringremove}\\
255\helpref{Strip}{wxstringstrip}\\
256\helpref{SubString}{wxstringsubstring}\\
257\helpref{UpperCase}{wxstringuppercase}
99f09bc1 258
d6718dd1 259
ed93168b 260\membersection{std::string compatibility functions}\label{wxstringat}
99f09bc1
VZ
261
262The supported functions are only listed here, please see any STL reference for
263their documentation.
264
265\begin{verbatim}
266 // take nLen chars starting at nPos
267 wxString(const wxString& str, size_t nPos, size_t nLen);
268 // take all characters from pStart to pEnd (poor man's iterators)
269 wxString(const void *pStart, const void *pEnd);
270
271 // lib.string.capacity
272 // return the length of the string
273 size_t size() const;
274 // return the length of the string
275 size_t length() const;
276 // return the maximum size of the string
277 size_t max_size() const;
278 // resize the string, filling the space with c if c != 0
279 void resize(size_t nSize, char ch = '\0');
280 // delete the contents of the string
281 void clear();
282 // returns true if the string is empty
283 bool empty() const;
284
285 // lib.string.access
286 // return the character at position n
287 char at(size_t n) const;
288 // returns the writable character at position n
289 char& at(size_t n);
290
291 // lib.string.modifiers
292 // append a string
293 wxString& append(const wxString& str);
294 // append elements str[pos], ..., str[pos+n]
295 wxString& append(const wxString& str, size_t pos, size_t n);
296 // append first n (or all if n == npos) characters of sz
297 wxString& append(const char *sz, size_t n = npos);
298
299 // append n copies of ch
300 wxString& append(size_t n, char ch);
301
302 // same as `this_string = str'
303 wxString& assign(const wxString& str);
304 // same as ` = str[pos..pos + n]
305 wxString& assign(const wxString& str, size_t pos, size_t n);
306 // same as `= first n (or all if n == npos) characters of sz'
307 wxString& assign(const char *sz, size_t n = npos);
308 // same as `= n copies of ch'
309 wxString& assign(size_t n, char ch);
310
311 // insert another string
312 wxString& insert(size_t nPos, const wxString& str);
313 // insert n chars of str starting at nStart (in str)
314 wxString& insert(size_t nPos, const wxString& str, size_t nStart, size_t n);
315
316 // insert first n (or all if n == npos) characters of sz
317 wxString& insert(size_t nPos, const char *sz, size_t n = npos);
318 // insert n copies of ch
319 wxString& insert(size_t nPos, size_t n, char ch);
320
321 // delete characters from nStart to nStart + nLen
322 wxString& erase(size_t nStart = 0, size_t nLen = npos);
323
324 // replaces the substring of length nLen starting at nStart
325 wxString& replace(size_t nStart, size_t nLen, const char* sz);
326 // replaces the substring with nCount copies of ch
327 wxString& replace(size_t nStart, size_t nLen, size_t nCount, char ch);
328 // replaces a substring with another substring
329 wxString& replace(size_t nStart, size_t nLen,
330 const wxString& str, size_t nStart2, size_t nLen2);
331 // replaces the substring with first nCount chars of sz
332 wxString& replace(size_t nStart, size_t nLen,
333 const char* sz, size_t nCount);
334
335 // swap two strings
336 void swap(wxString& str);
337
338 // All find() functions take the nStart argument which specifies the
339 // position to start the search on, the default value is 0. All functions
340 // return npos if there were no match.
341
342 // find a substring
343 size_t find(const wxString& str, size_t nStart = 0) const;
344
345 // find first n characters of sz
346 size_t find(const char* sz, size_t nStart = 0, size_t n = npos) const;
347
7335902d 348 // find the first occurrence of character ch after nStart
99f09bc1
VZ
349 size_t find(char ch, size_t nStart = 0) const;
350
351 // rfind() family is exactly like find() but works right to left
352
353 // as find, but from the end
354 size_t rfind(const wxString& str, size_t nStart = npos) const;
355
356 // as find, but from the end
357 size_t rfind(const char* sz, size_t nStart = npos,
358 size_t n = npos) const;
359 // as find, but from the end
360 size_t rfind(char ch, size_t nStart = npos) const;
361
7335902d 362 // find first/last occurrence of any character in the set
99f09bc1
VZ
363
364 //
365 size_t find_first_of(const wxString& str, size_t nStart = 0) const;
366 //
367 size_t find_first_of(const char* sz, size_t nStart = 0) const;
368 // same as find(char, size_t)
369 size_t find_first_of(char c, size_t nStart = 0) const;
370 //
371 size_t find_last_of (const wxString& str, size_t nStart = npos) const;
372 //
373 size_t find_last_of (const char* s, size_t nStart = npos) const;
374 // same as rfind(char, size_t)
375 size_t find_last_of (char c, size_t nStart = npos) const;
376
7335902d 377 // find first/last occurrence of any character not in the set
99f09bc1
VZ
378
379 //
380 size_t find_first_not_of(const wxString& str, size_t nStart = 0) const;
381 //
382 size_t find_first_not_of(const char* s, size_t nStart = 0) const;
383 //
384 size_t find_first_not_of(char ch, size_t nStart = 0) const;
385 //
386 size_t find_last_not_of(const wxString& str, size_t nStart=npos) const;
387 //
388 size_t find_last_not_of(const char* s, size_t nStart = npos) const;
389 //
390 size_t find_last_not_of(char ch, size_t nStart = npos) const;
391
392 // All compare functions return a negative, zero or positive value
393 // if the [sub]string is less, equal or greater than the compare() argument.
394
395 // just like strcmp()
396 int compare(const wxString& str) const;
397 // comparison with a substring
398 int compare(size_t nStart, size_t nLen, const wxString& str) const;
399 // comparison of 2 substrings
400 int compare(size_t nStart, size_t nLen,
401 const wxString& str, size_t nStart2, size_t nLen2) const;
402 // just like strcmp()
403 int compare(const char* sz) const;
404 // substring comparison with first nCount characters of sz
405 int compare(size_t nStart, size_t nLen,
406 const char* sz, size_t nCount = npos) const;
407
408 // substring extraction
409 wxString substr(size_t nStart = 0, size_t nLen = npos) const;
410\end{verbatim}
411
412%%%%% MEMBERS HERE %%%%%
413\helponly{\insertatlevel{2}{
414
415\wxheading{Members}
416
417}}
a660d684 418
d6718dd1 419
a660d684
KB
420\membersection{wxString::wxString}\label{wxstringconstruct}
421
b3324be2 422\func{}{wxString}{\void}
a660d684 423
bd8465ff 424Default constructor. Initializes the string to {\tt ""} (empty string).
a660d684 425
b3324be2 426\func{}{wxString}{\param{const wxString\&}{ x}}
a660d684 427
b3324be2 428Copy constructor.
a660d684 429
b0b96f66 430\func{}{wxString}{\param{wxChar}{ ch}, \param{size\_t}{ n = 1}}
a660d684 431
b3324be2 432Constructs a string of {\it n} copies of character {\it ch}.
a660d684 433
b0b96f66 434\func{}{wxString}{\param{const wxChar*}{ psz}, \param{size\_t}{ nLength = wxSTRING\_MAXLEN}}
a660d684 435
b3324be2 436Takes first {\it nLength} characters from the C string {\it psz}.
bd8465ff 437The default value of {\tt wxSTRING\_MAXLEN} means to take all the string.
f6bcfd97
BP
438
439Note that this constructor may be used even if {\it psz} points to a buffer
440with binary data (i.e. containing {\tt NUL} characters) as long as you provide
441the correct value for {\it nLength}. However, the default form of it works
442only with strings without intermediate {\tt NUL}s because it uses
443{\tt strlen()} to calculate the effective length and it would not give correct
444results otherwise.
a660d684 445
99f09bc1 446\func{}{wxString}{\param{const unsigned char*}{ psz}, \param{size\_t}{ nLength = wxSTRING\_MAXLEN}}
a660d684 447
b3324be2 448For compilers using unsigned char: takes first {\it nLength} characters from the C string {\it psz}.
bd8465ff 449The default value of {\tt wxSTRING\_MAXLEN} means take all the string.
b0b96f66 450For ANSI builds only (note the use of {\tt char} instead of {\tt wxChar}).
a660d684 451
bd8465ff
VS
452\wxheading{Constructors with conversion}
453
b0b96f66
VZ
454The following constructors allow you to construct wxString from a wide string
455in ANSI build or from a C string in Unicode build.
bd8465ff 456
5487ff0f 457\func{}{wxString}{\param{const wchar\_t*}{ psz}, \param{const wxMBConv\&}{ conv}, \param{size\_t}{ nLength = wxSTRING\_MAXLEN}}
bd8465ff
VS
458
459Initializes the string from first \arg{nLength} characters of wide string.
460The default value of {\tt wxSTRING\_MAXLEN} means take all the string.
461In ANSI build, \arg{conv}'s
462\helpref{WC2MB}{wxmbconvwc2mb} method is called to
463convert \arg{psz} to wide string. It is ignored in Unicode build.
464
5487ff0f 465\func{}{wxString}{\param{const char*}{ psz}, \param{const wxMBConv\&}{ conv = wxConvLibc}, \param{size\_t}{ nLength = wxSTRING\_MAXLEN}}
bd8465ff
VS
466
467Initializes the string from first \arg{nLength} characters of C string.
468The default value of {\tt wxSTRING\_MAXLEN} means take all the string.
469In Unicode build, \arg{conv}'s
470\helpref{MB2WC}{wxmbconvmb2wc} method is called to
24ad9318
VS
471convert \arg{psz} to wide string (the default converter uses current locale's
472charset). It is ignored in ANSI build.
bd8465ff
VS
473
474\wxheading{See also}
475
476\helpref{wxMBConv classes}{mbconvclasses}, \helpref{mb\_str}{wxstringmbstr},
477\helpref{wc\_str}{wxstringwcstr}
a660d684 478
d6718dd1 479
b3324be2 480\membersection{wxString::\destruct{wxString}}\label{wxstringdestruct}
a660d684 481
b3324be2 482\func{}{\destruct{wxString}}{\void}
a660d684 483
b3324be2 484String destructor. Note that this is not virtual, so wxString must not be inherited from.
a660d684 485
d6718dd1 486
99f09bc1
VZ
487\membersection{wxString::Alloc}\label{wxstringalloc}
488
489\func{void}{Alloc}{\param{size\_t}{ nLen}}
490
491Preallocate enough space for wxString to store {\it nLen} characters. This function
492may be used to increase speed when the string is constructed by repeated
493concatenation as in
494
495\begin{verbatim}
a660d684 496
99f09bc1
VZ
497// delete all vowels from the string
498wxString DeleteAllVowels(const wxString& original)
499{
500 wxString result;
a660d684 501
99f09bc1 502 size_t len = original.length();
a660d684 503
99f09bc1
VZ
504 result.Alloc(len);
505
506 for ( size_t n = 0; n < len; n++ )
507 {
508 if ( strchr("aeuio", tolower(original[n])) == NULL )
509 result += original[n];
510 }
511
512 return result;
513}
514
515\end{verbatim}
516
dbd94b75 517because it will avoid the need to reallocate string memory many times (in case
99f09bc1
VZ
518of long strings). Note that it does not set the maximal length of a string - it
519will still expand if more than {\it nLen} characters are stored in it. Also, it
520does not truncate the existing string (use
521\helpref{Truncate()}{wxstringtruncate} for this) even if its current length is
522greater than {\it nLen}
523
d6718dd1 524
99f09bc1 525\membersection{wxString::Append}\label{wxstringappend}
b3324be2 526
b0b96f66 527\func{wxString\&}{Append}{\param{const wxChar*}{ psz}}
a660d684 528
b3324be2 529Concatenates {\it psz} to this string, returning a reference to it.
a660d684 530
b0b96f66 531\func{wxString\&}{Append}{\param{wxChar}{ ch}, \param{int}{ count = 1}}
a660d684 532
b3324be2
JS
533Concatenates character {\it ch} to this string, {\it count} times, returning a reference
534to it.
535
d6718dd1 536
99f09bc1 537\membersection{wxString::AfterFirst}\label{wxstringafterfirst}
b3324be2 538
b0b96f66 539\constfunc{wxString}{AfterFirst}{\param{wxChar}{ ch}}
b3324be2 540
7335902d 541Gets all the characters after the first occurrence of {\it ch}.
b3324be2 542Returns the empty string if {\it ch} is not found.
a660d684 543
d6718dd1 544
99f09bc1 545\membersection{wxString::AfterLast}\label{wxstringafterlast}
a660d684 546
b0b96f66 547\constfunc{wxString}{AfterLast}{\param{wxChar}{ ch}}
99f09bc1 548
7335902d 549Gets all the characters after the last occurrence of {\it ch}.
99f09bc1
VZ
550Returns the whole string if {\it ch} is not found.
551
d6718dd1 552
99f09bc1
VZ
553\membersection{wxString::BeforeFirst}\label{wxstringbeforefirst}
554
b0b96f66 555\constfunc{wxString}{BeforeFirst}{\param{wxChar}{ ch}}
99f09bc1 556
7335902d 557Gets all characters before the first occurrence of {\it ch}.
99f09bc1
VZ
558Returns the whole string if {\it ch} is not found.
559
d6718dd1 560
99f09bc1
VZ
561\membersection{wxString::BeforeLast}\label{wxstringbeforelast}
562
b0b96f66 563\constfunc{wxString}{BeforeLast}{\param{wxChar}{ ch}}
b3324be2 564
7335902d 565Gets all characters before the last occurrence of {\it ch}.
99f09bc1 566Returns the empty string if {\it ch} is not found.
a660d684 567
d6718dd1 568
ed93168b
VZ
569\membersection{wxString::c\_str}\label{wxstringcstr}
570
f5409ef1 571\constfunc{const wxChar *}{c\_str}{\void}
ed93168b 572
bd8465ff
VS
573Returns a pointer to the string data ({\tt const char*} in ANSI build,
574{\tt const wchar\_t*} in Unicode build).
575
ef0f1387
VS
576Note that the returned value is not convertible to {\tt char*} or
577{\tt wchar\_t*}, use \helpref{char\_str}{wxstringcharstr} or
578\helpref{wchar\_string}{wxstringwcharstr} if you need to pass string value
579to a function expecting non-const pointer.
580
581\wxheading{See also}
582
583\helpref{mb\_str}{wxstringmbstr}, \helpref{wc\_str}{wxstringwcstr},
584\helpref{fn\_str}{wxstringfnstr}, \helpref{char\_str}{wxstringcharstr},
585\helpref{wchar\_string}{wxstringwcharstr}
586
587\membersection{wxString::char\_str}\label{wxstringcharstr}
588
5487ff0f 589\constfunc{wxWritableCharBuffer}{char\_str}{\param{const wxMBConv\&}{ conv = wxConvLibc}}
ef0f1387
VS
590
591Returns an object with string data that is implicitly convertible to
592{\tt char*} pointer. Note that any change to the returned buffer is lost and so
593this function is only usable for passing strings to legacy libraries that
594don't have const-correct API. Use \helpref{wxStringBuffer}{wxstringbuffer} if
595you want to modify the string.
596
bd8465ff
VS
597\wxheading{See also}
598
599\helpref{mb\_str}{wxstringmbstr}, \helpref{wc\_str}{wxstringwcstr},
ef0f1387
VS
600\helpref{fn\_str}{wxstringfnstr}, \helpref{c\_str}{wxstringcstr},
601\helpref{wchar\_str}{wxstringwcharstr}
ed93168b 602
d6718dd1 603
ed93168b
VZ
604\membersection{wxString::Clear}\label{wxstringclear}
605
606\func{void}{Clear}{\void}
607
608Empties the string and frees memory occupied by it.
609
610See also: \helpref{Empty}{wxstringempty}
611
d6718dd1 612
f7bd2698
JS
613\membersection{wxString::Cmp}\label{wxstringcmp}
614
06e317a3
VZ
615\constfunc{int}{Cmp}{\param{const wxString\&}{ s}}
616
b0b96f66 617\constfunc{int}{Cmp}{\param{const wxChar*}{ psz}}
f7bd2698
JS
618
619Case-sensitive comparison.
620
99f09bc1 621Returns a positive value if the string is greater than the argument, zero if
f6bcfd97 622it is equal to it or a negative value if it is less than the argument (same semantics
99f09bc1 623as the standard {\it strcmp()} function).
f7bd2698 624
99f09bc1 625See also \helpref{CmpNoCase}{wxstringcmpnocase}, \helpref{IsSameAs}{wxstringissameas}.
f7bd2698 626
d6718dd1 627
f7bd2698
JS
628\membersection{wxString::CmpNoCase}\label{wxstringcmpnocase}
629
06e317a3
VZ
630\constfunc{int}{CmpNoCase}{\param{const wxString\&}{ s}}
631
b0b96f66 632\constfunc{int}{CmpNoCase}{\param{const wxChar*}{ psz}}
f7bd2698
JS
633
634Case-insensitive comparison.
635
99f09bc1 636Returns a positive value if the string is greater than the argument, zero if
f6bcfd97 637it is equal to it or a negative value if it is less than the argument (same semantics
99f09bc1 638as the standard {\it strcmp()} function).
f7bd2698 639
99f09bc1 640See also \helpref{Cmp}{wxstringcmp}, \helpref{IsSameAs}{wxstringissameas}.
f7bd2698 641
d6718dd1 642
99f09bc1 643\membersection{wxString::CompareTo}\label{wxstringcompareto}
a660d684
KB
644
645\begin{verbatim}
b0b96f66 646enum wxString::caseCompare {exact, ignoreCase};
a660d684 647\end{verbatim}
ed93168b 648
b0b96f66 649\constfunc{int}{CompareTo}{\param{const wxChar*}{ psz}, \param{caseCompare}{ cmp = exact}}
a660d684 650
b3324be2 651Case-sensitive comparison. Returns 0 if equal, 1 if greater or -1 if less.
a660d684 652
b0b96f66
VZ
653This is a wxWidgets 1.xx compatibility function; use \helpref{Cmp}{wxstringcmp} instead.
654
d6718dd1 655
99f09bc1 656\membersection{wxString::Contains}\label{wxstringcontains}
a660d684 657
99f09bc1 658\constfunc{bool}{Contains}{\param{const wxString\&}{ str}}
a660d684 659
b0b96f66
VZ
660Returns \true if target appears anywhere in wxString; else \false.
661
662This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
a660d684 663
d6718dd1 664
f7bd2698 665\membersection{wxString::Empty}\label{wxstringempty}
a660d684 666
f7bd2698
JS
667\func{void}{Empty}{\void}
668
ed93168b
VZ
669Makes the string empty, but doesn't free memory occupied by the string.
670
671See also: \helpref{Clear()}{wxstringclear}.
f7bd2698 672
d6718dd1 673
f7bd2698
JS
674\membersection{wxString::Find}\label{wxstringfind}
675
8a540c88 676\constfunc{int}{Find}{\param{wxUniChar}{ ch}, \param{bool}{ fromEnd = false}}
f7bd2698 677
e2622169 678Searches for the given character. Returns the starting index, or {\tt wxNOT\_FOUND} if not found.
f7bd2698 679
8a540c88 680\constfunc{int}{Find}{\param{const wxString\&}{ sub}}
f7bd2698 681
e2622169 682Searches for the given string. Returns the starting index, or {\tt wxNOT\_FOUND} if not found.
a660d684 683
d6718dd1 684
b3324be2 685\membersection{wxString::First}\label{wxstringfirst}
a660d684 686
b0b96f66 687\func{int}{First}{\param{wxChar}{ c}}
a660d684 688
b0b96f66 689\constfunc{int}{First}{\param{const wxChar*}{ psz}}
a660d684 690
0aa35d19 691\constfunc{int}{First}{\param{const wxString\&}{ str}}
a660d684 692
0aa35d19 693Same as \helpref{Find}{wxstringfind}.
a660d684 694
b0b96f66
VZ
695This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
696
d6718dd1 697
bd8465ff
VS
698\membersection{wxString::fn\_str}\label{wxstringfnstr}
699
700\constfunc{const wchar\_t*}{fn\_str}{\void}
701
702\constfunc{const char*}{fn\_str}{\void}
703
704\constfunc{const wxCharBuffer}{fn\_str}{\void}
705
706Returns string representation suitable for passing to OS' functions for
707file handling. In ANSI build, this is same as \helpref{c\_str}{wxstringcstr}.
708In Unicode build, returned value can be either wide character string
9c3d92c5 709or C string in charset matching the {\tt wxConvFileName} object, depending on
bd8465ff
VS
710the OS.
711
712\wxheading{See also}
713
714\helpref{wxMBConv}{wxmbconv},
715\helpref{wc\_str}{wxstringwcstr}, \helpref{mb\_str}{wxstringwcstr}
716
d6718dd1 717
341e7d28
VZ
718\membersection{wxString::Format}\label{wxstringformat}
719
720\func{static wxString}{Format}{\param{const wxChar }{*format}, \param{}{...}}
721
722This static function returns the string containing the result of calling
723\helpref{Printf}{wxstringprintf} with the passed parameters on it.
724
725\wxheading{See also}
726
727\helpref{FormatV}{wxstringformatv}, \helpref{Printf}{wxstringprintf}
728
d6718dd1 729
341e7d28
VZ
730\membersection{wxString::FormatV}\label{wxstringformatv}
731
3980000c 732\func{static wxString}{FormatV}{\param{const wxChar }{*format}, \param{va\_list }{argptr}}
341e7d28
VZ
733
734This static function returns the string containing the result of calling
735\helpref{PrintfV}{wxstringprintfv} with the passed parameters on it.
736
737\wxheading{See also}
738
739\helpref{Format}{wxstringformat}, \helpref{PrintfV}{wxstringprintfv}
740
d6718dd1 741
99f09bc1
VZ
742\membersection{wxString::Freq}\label{wxstringfreq}
743
b0b96f66 744\constfunc{int}{Freq}{\param{wxChar }{ch}}
99f09bc1 745
f6bcfd97 746Returns the number of occurrences of {\it ch} in the string.
99f09bc1 747
b0b96f66
VZ
748This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
749
cb2f2135
VS
750\membersection{wxString::From8BitData}\label{wxstringfrom8bitdata}
751
752\func{static wxString }{From8BitData}{\param{const char*}{ buf}, \param{size\_t}{len}}
753
754\func{static wxString }{From8BitData}{\param{const char*}{ buf}}
755
756Converts given buffer of binary data from 8-bit string to wxString. In Unicode
757build, the string is interpreted as being in ISO-8859-1 encoding. The version
758without \arg{len} parameter takes NUL-terminated data.
759
760This is a convenience method useful when storing binary data in wxString.
761
762\newsince{2.8.4}
763
764\wxheading{See also}
765
766\helpref{To8BitData}{wxstringto8bitdata}
767
d6718dd1 768
6d9d6350
JS
769\membersection{wxString::FromAscii}\label{wxstringfromascii}
770
771\func{static wxString }{FromAscii}{\param{const char*}{ s}}
772
e6310bbc
VS
773\func{static wxString }{FromAscii}{\param{const char*}{ s}, \param{size\_t}{ len}}
774
6d9d6350
JS
775\func{static wxString }{FromAscii}{\param{const char}{ c}}
776
777Converts the string or character from an ASCII, 7-bit form
778to the native wxString representation. Most useful when using
b0b96f66 779a Unicode build of wxWidgets (note the use of {\tt char} instead of {\tt wxChar}).
bd8465ff
VS
780Use \helpref{wxString constructors}{wxstringconstruct} if you
781need to convert from another charset.
6d9d6350 782
d6718dd1 783
5f167b77
VS
784\membersection{wxString::FromUTF8}\label{wxstringfromutf8}
785
786\func{static wxString }{FromUTF8}{\param{const char*}{ s}}
787
788\func{static wxString }{FromUTF8}{\param{const char*}{ s}, \param{size\_t}{ len}}
789
790Converts C string encoded in UTF-8 to wxString.
791
792Note that this method assumes that \arg{s} is a valid UTF-8 sequence and
793doesn't do any validation in release builds, it's validity is only checked in
794debug builds.
795
796
f7bd2698 797\membersection{wxString::GetChar}\label{wxstringgetchar}
a660d684 798
b0b96f66 799\constfunc{wxChar}{GetChar}{\param{size\_t}{ n}}
a660d684 800
f7bd2698 801Returns the character at position {\it n} (read-only).
a660d684 802
d6718dd1 803
99f09bc1 804\membersection{wxString::GetData}\label{wxstringgetdata}
a660d684 805
f5409ef1 806\constfunc{const wxChar*}{GetData}{\void}
a660d684 807
fc2171bd 808wxWidgets compatibility conversion. Returns a constant pointer to the data in the string.
a660d684 809
d6718dd1 810
f7bd2698 811\membersection{wxString::GetWritableChar}\label{wxstringgetwritablechar}
a660d684 812
b0b96f66 813\func{wxChar\&}{GetWritableChar}{\param{size\_t}{ n}}
a660d684 814
f7bd2698 815Returns a reference to the character at position {\it n}.
a660d684 816
d6718dd1 817
f7bd2698 818\membersection{wxString::GetWriteBuf}\label{wxstringgetwritebuf}
a660d684 819
9a55c2ee 820\func{wxChar*}{GetWriteBuf}{\param{size\_t}{ len}}
a660d684 821
f7bd2698 822Returns a writable buffer of at least {\it len} bytes.
8161ba08
JS
823It returns a pointer to a new memory block, and the
824existing data will not be copied.
a660d684 825
24ad9318
VS
826Call \helpref{wxString::UngetWriteBuf}{wxstringungetwritebuf} as soon as
827possible to put the string back into a reasonable state.
828
829This method is deprecated, please use
830\helpref{wxStringBuffer}{wxstringbuffer} or
831\helpref{wxStringBufferLength}{wxstringbufferlength} instead.
a660d684 832
d6718dd1 833
99f09bc1 834\membersection{wxString::Index}\label{wxstringindex}
a660d684 835
b0b96f66 836\constfunc{size\_t}{Index}{\param{wxChar}{ ch}}
a660d684 837
b0b96f66 838\constfunc{size\_t}{Index}{\param{const wxChar*}{ sz}}
a660d684 839
f7bd2698 840Same as \helpref{wxString::Find}{wxstringfind}.
a660d684 841
b0b96f66
VZ
842This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
843
d6718dd1 844
99f09bc1 845\membersection{wxString::IsAscii}\label{wxstringisascii}
a660d684 846
f7bd2698 847\constfunc{bool}{IsAscii}{\void}
a660d684 848
b0b96f66
VZ
849Returns \true if the string contains only ASCII characters.
850
851This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
a660d684 852
d6718dd1 853
f7bd2698 854\membersection{wxString::IsEmpty}\label{wxstringisempty}
a660d684 855
f7bd2698 856\constfunc{bool}{IsEmpty}{\void}
a660d684 857
b0b96f66 858Returns \true if the string is empty.
a660d684 859
d6718dd1 860
99f09bc1 861\membersection{wxString::IsNull}\label{wxstringisnull}
a660d684 862
f7bd2698 863\constfunc{bool}{IsNull}{\void}
a660d684 864
b0b96f66
VZ
865Returns \true if the string is empty (same as \helpref{IsEmpty}{wxstringisempty}).
866
867This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
a660d684 868
d6718dd1 869
99f09bc1 870\membersection{wxString::IsNumber}\label{wxstringisnumber}
a660d684 871
f7bd2698
JS
872\constfunc{bool}{IsNumber}{\void}
873
b0b96f66
VZ
874Returns \true if the string is an integer (with possible sign).
875
876This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
f7bd2698 877
d6718dd1 878
f7bd2698
JS
879\membersection{wxString::IsSameAs}\label{wxstringissameas}
880
b0b96f66 881\constfunc{bool}{IsSameAs}{\param{const wxChar*}{ psz}, \param{bool}{ caseSensitive = true}}
f7bd2698
JS
882
883Test for string equality, case-sensitive (default) or not.
884
b0b96f66 885caseSensitive is \true by default (case matters).
a660d684 886
b0b96f66 887Returns \true if strings are equal, \false otherwise.
f7bd2698 888
4b4fae9b 889See also \helpref{Cmp}{wxstringcmp}, \helpref{CmpNoCase}{wxstringcmpnocase}
f33fee2a 890
b0b96f66 891\constfunc{bool}{IsSameAs}{\param{wxChar}{ c}, \param{bool}{ caseSensitive = true}}
f33fee2a
VZ
892
893Test whether the string is equal to the single character {\it c}. The test is
b0b96f66 894case-sensitive if {\it caseSensitive} is \true (default) or not if it is \false.
f33fee2a 895
b0b96f66 896Returns \true if the string is equal to the character, \false otherwise.
f33fee2a 897
4b4fae9b 898See also \helpref{Cmp}{wxstringcmp}, \helpref{CmpNoCase}{wxstringcmpnocase}
a660d684 899
d6718dd1 900
99f09bc1 901\membersection{wxString::IsWord}\label{wxstringisword}
a660d684 902
f7bd2698 903\constfunc{bool}{IsWord}{\void}
a660d684 904
b0b96f66
VZ
905Returns \true if the string is a word.
906
907This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
a660d684 908
d6718dd1 909
99f09bc1 910\membersection{wxString::Last}\label{wxstringlast}
a660d684 911
b0b96f66 912\constfunc{wxChar}{Last}{\void}
a660d684 913
f7bd2698 914Returns the last character.
a660d684 915
b0b96f66 916\func{wxChar\&}{Last}{\void}
a660d684 917
f7bd2698 918Returns a reference to the last character (writable).
a660d684 919
b0b96f66
VZ
920This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
921
d6718dd1 922
f7bd2698
JS
923\membersection{wxString::Left}\label{wxstringleft}
924
925\constfunc{wxString}{Left}{\param{size\_t}{ count}}
926
fefc4f15 927Returns the first {\it count} characters of the string.
a660d684 928
d6718dd1 929
f7bd2698 930\membersection{wxString::Len}\label{wxstringlen}
a660d684 931
f7bd2698
JS
932\constfunc{size\_t}{Len}{\void}
933
934Returns the length of the string.
935
d6718dd1 936
f7bd2698
JS
937\membersection{wxString::Length}\label{wxstringlength}
938
939\constfunc{size\_t}{Length}{\void}
940
941Returns the length of the string (same as Len).
a660d684 942
b0b96f66
VZ
943This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
944
d6718dd1 945
99f09bc1
VZ
946\membersection{wxString::Lower}\label{wxstringlower}
947
948\constfunc{wxString}{Lower}{\void}
949
950Returns this string converted to the lower case.
951
d6718dd1 952
99f09bc1 953\membersection{wxString::LowerCase}\label{wxstringlowercase}
a660d684 954
f7bd2698
JS
955\func{void}{LowerCase}{\void}
956
957Same as MakeLower.
958
b0b96f66
VZ
959This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
960
d6718dd1 961
f7bd2698
JS
962\membersection{wxString::MakeLower}\label{wxstringmakelower}
963
e16f8973 964\func{wxString\&}{MakeLower}{\void}
f7bd2698 965
e16f8973 966Converts all characters to lower case and returns the result.
f7bd2698 967
d6718dd1 968
f7bd2698
JS
969\membersection{wxString::MakeUpper}\label{wxstringmakeupper}
970
e16f8973 971\func{wxString\&}{MakeUpper}{\void}
f7bd2698 972
e16f8973 973Converts all characters to upper case and returns the result.
a660d684 974
d6718dd1 975
99f09bc1 976\membersection{wxString::Matches}\label{wxstringmatches}
a660d684 977
8a540c88 978\constfunc{bool}{Matches}{\param{const wxString\&}{ mask}}
f7bd2698 979
b0b96f66 980Returns \true if the string contents matches a mask containing '*' and '?'.
a660d684 981
d6718dd1 982
bd8465ff
VS
983\membersection{wxString::mb\_str}\label{wxstringmbstr}
984
5487ff0f 985\constfunc{const char*}{mb\_str}{\param{const wxMBConv\&}{ conv = wxConvLibc}}
bd8465ff 986
5487ff0f 987\constfunc{const wxCharBuffer}{mb\_str}{\param{const wxMBConv\&}{ conv = wxConvLibc}}
bd8465ff
VS
988
989Returns multibyte (C string) representation of the string.
990In Unicode build, converts using \arg{conv}'s \helpref{cWC2MB}{wxmbconvcwc2mb}
991method and returns wxCharBuffer. In ANSI build, this function is same
992as \helpref{c\_str}{wxstringcstr}.
993The macro wxWX2MBbuf is defined as the correct return type (without const).
994
995\wxheading{See also}
996
997\helpref{wxMBConv}{wxmbconv},
998\helpref{c\_str}{wxstringcstr}, \helpref{wc\_str}{wxstringwcstr},
ef0f1387 999\helpref{fn\_str}{wxstringfnstr}, \helpref{char\_str}{wxstringcharstr}
bd8465ff 1000
d6718dd1 1001
f7bd2698 1002\membersection{wxString::Mid}\label{wxstringmid}
a660d684 1003
99f09bc1 1004\constfunc{wxString}{Mid}{\param{size\_t}{ first}, \param{size\_t}{ count = wxSTRING\_MAXLEN}}
a660d684 1005
f7bd2698
JS
1006Returns a substring starting at {\it first}, with length {\it count}, or the rest of
1007the string if {\it count} is the default value.
1008
d6718dd1 1009
f7bd2698
JS
1010\membersection{wxString::Pad}\label{wxstringpad}
1011
b0b96f66 1012\func{wxString\&}{Pad}{\param{size\_t}{ count}, \param{wxChar}{ pad = ' '}, \param{bool}{ fromRight = true}}
f7bd2698
JS
1013
1014Adds {\it count} copies of {\it pad} to the beginning, or to the end of the string (the default).
1015
1016Removes spaces from the left or from the right (default).
a660d684 1017
d6718dd1 1018
99f09bc1 1019\membersection{wxString::Prepend}\label{wxstringprepend}
a660d684 1020
f7bd2698 1021\func{wxString\&}{Prepend}{\param{const wxString\&}{ str}}
a660d684 1022
f7bd2698 1023Prepends {\it str} to this string, returning a reference to this string.
a660d684 1024
d6718dd1 1025
f7bd2698 1026\membersection{wxString::Printf}\label{wxstringprintf}
a660d684 1027
b0b96f66 1028\func{int}{Printf}{\param{const wxChar* }{pszFormat}, \param{}{...}}
f7bd2698 1029
99f09bc1
VZ
1030Similar to the standard function {\it sprintf()}. Returns the number of
1031characters written, or an integer less than zero on error.
1032
418ab1e7 1033Note that if {\tt wxUSE\_PRINTF\_POS\_PARAMS} is set to 1, then this function supports
412a5c57
VZ
1034Unix98-style positional parameters:
1035
1036\begin{verbatim}
1037 wxString str;
1038
1039 str.Printf(wxT("%d %d %d"), 1, 2, 3);
1040 // str now contains "1 2 3"
1041
1042 str.Printf(wxT("%2$d %3$d %1$d"), 1, 2, 3);
1043 // str now contains "2 3 1"
1044\end{verbatim}
1045
99f09bc1
VZ
1046{\bf NB:} This function will use a safe version of {\it vsprintf()} (usually called
1047{\it vsnprintf()}) whenever available to always allocate the buffer of correct
1048size. Unfortunately, this function is not available on all platforms and the
1049dangerous {\it vsprintf()} will be used then which may lead to buffer overflows.
a660d684 1050
d6718dd1 1051
f7bd2698
JS
1052\membersection{wxString::PrintfV}\label{wxstringprintfv}
1053
b0b96f66 1054\func{int}{PrintfV}{\param{const wxChar* }{pszFormat}, \param{va\_list}{ argPtr}}
f7bd2698
JS
1055
1056Similar to vprintf. Returns the number of characters written, or an integer less than zero
1057on error.
a660d684 1058
d6718dd1 1059
99f09bc1 1060\membersection{wxString::Remove}\label{wxstringremove}
a660d684 1061
f7bd2698
JS
1062\func{wxString\&}{Remove}{\param{size\_t}{ pos}}
1063
1064Same as Truncate. Removes the portion from {\it pos} to the end of the string.
1065
1066\func{wxString\&}{Remove}{\param{size\_t}{ pos}, \param{size\_t}{ len}}
1067
08890e27 1068Removes {\it len} characters from the string, starting at {\it pos}.
f7bd2698 1069
b0b96f66
VZ
1070This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1071
d6718dd1 1072
f7bd2698 1073\membersection{wxString::RemoveLast}\label{wxstringremovelast}
a660d684 1074
f7bd2698
JS
1075\func{wxString\&}{RemoveLast}{\void}
1076
1077Removes the last character.
a660d684 1078
d6718dd1 1079
99f09bc1 1080\membersection{wxString::Replace}\label{wxstringreplace}
a660d684 1081
8a540c88 1082\func{size\_t}{Replace}{\param{const wxString\&}{ strOld}, \param{const wxString\&}{ strNew}, \param{bool}{ replaceAll = true}}
f7bd2698 1083
7335902d 1084Replace first (or all) occurrences of substring with another one.
f7bd2698 1085
7335902d 1086{\it replaceAll}: global replace (default), or only the first occurrence.
f7bd2698
JS
1087
1088Returns the number of replacements made.
1089
d6718dd1 1090
f7bd2698
JS
1091\membersection{wxString::Right}\label{wxstringright}
1092
1093\constfunc{wxString}{Right}{\param{size\_t}{ count}}
a660d684 1094
f7bd2698 1095Returns the last {\it count} characters.
a660d684 1096
d6718dd1 1097
f7bd2698 1098\membersection{wxString::SetChar}\label{wxstringsetchar}
a660d684 1099
b0b96f66 1100\func{void}{SetChar}{\param{size\_t}{ n}, \param{wxChar}{ch}}
f7bd2698
JS
1101
1102Sets the character at position {\it n}.
1103
d6718dd1 1104
f7bd2698
JS
1105\membersection{wxString::Shrink}\label{wxstringshrink}
1106
1107\func{void}{Shrink}{\void}
1108
99f09bc1
VZ
1109Minimizes the string's memory. This can be useful after a call to
1110\helpref{Alloc()}{wxstringalloc} if too much memory were preallocated.
a660d684 1111
d6718dd1 1112
f6bcfd97
BP
1113\membersection{wxString::StartsWith}\label{wxstringstartswith}
1114
c5e7a7d7 1115\constfunc{bool}{StartsWith}{\param{const wxString\& }{prefix}, \param{wxString }{*rest = NULL}}
f6bcfd97
BP
1116
1117This function can be used to test if the string starts with the specified
b0b96f66 1118{\it prefix}. If it does, the function will return \true and put the rest
f6bcfd97 1119of the string (i.e. after the prefix) into {\it rest} string if it is not
b0b96f66 1120{\tt NULL}. Otherwise, the function returns \false and doesn't modify the
f6bcfd97
BP
1121{\it rest}.
1122
d6718dd1 1123
3affcd07
VZ
1124\membersection{wxString::EndsWith}\label{wxstringendswith}
1125
c5e7a7d7 1126\constfunc{bool}{EndsWith}{\param{const wxString\& }{suffix}, \param{wxString }{*rest = NULL}}
3affcd07
VZ
1127
1128This function can be used to test if the string ends with the specified
b0b96f66 1129{\it suffix}. If it does, the function will return \true and put the
3affcd07 1130beginning of the string before the suffix into {\it rest} string if it is not
b0b96f66 1131{\tt NULL}. Otherwise, the function returns \false and doesn't
3affcd07
VZ
1132modify the {\it rest}.
1133
d6718dd1 1134
99f09bc1 1135\membersection{wxString::Strip}\label{wxstringstrip}
a660d684
KB
1136
1137\begin{verbatim}
b0b96f66 1138enum wxString::stripType {leading = 0x1, trailing = 0x2, both = 0x3};
a660d684
KB
1139\end{verbatim}
1140
f7bd2698 1141\constfunc{wxString}{Strip}{\param{stripType}{ s = trailing}}
a660d684 1142
f7bd2698
JS
1143Strip characters at the front and/or end. The same as Trim except that it
1144doesn't change this string.
a660d684 1145
b0b96f66
VZ
1146This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1147
d6718dd1 1148
99f09bc1
VZ
1149\membersection{wxString::SubString}\label{wxstringsubstring}
1150
f6bcfd97 1151\constfunc{wxString}{SubString}{\param{size\_t}{ from}, \param{size\_t}{ to}}
99f09bc1 1152
b855ef77
VZ
1153Returns the part of the string between the indices {\it from} and {\it to}
1154inclusive.
99f09bc1 1155
b0b96f66
VZ
1156This is a wxWidgets 1.xx compatibility function, use \helpref{Mid}{wxstringmid}
1157instead (but note that parameters have different meaning).
1158
d6718dd1 1159
cb2f2135
VS
1160\membersection{wxString::To8BitData}\label{wxstringto8bitdata}
1161
1162\constfunc{const char*}{To8BitData}{\void}
1163
1164Converts the string to an 8-bit string (ANSI builds only).
1165
1166\constfunc{const wxCharBuffer}{To8BitData}{\void}
1167
1168Converts the string to an 8-bit string in ISO-8859-1 encoding in the form of
1169a wxCharBuffer (Unicode builds only).
1170
1171This is a convenience method useful when storing binary data in wxString.
1172
1173\newsince{2.8.4}
1174
1175\wxheading{See also}
1176
1177\helpref{From8BitData}{wxstringfrom8bitdata}
1178
1179
6d9d6350
JS
1180\membersection{wxString::ToAscii}\label{wxstringtoascii}
1181
1182\constfunc{const char*}{ToAscii}{\void}
1183
6d9d6350
JS
1184\constfunc{const wxCharBuffer}{ToAscii}{\void}
1185
1186Converts the string to an ASCII, 7-bit string in the form of
5f167b77 1187a wxCharBuffer (Unicode builds only) or a C string (ANSI builds).
6d9d6350 1188
bd8465ff
VS
1189Note that this conversion only works if the string contains only ASCII
1190characters. The \helpref{mb\_str}{wxstringmbstr} method provides more
1191powerful means of converting wxString to C string.
1192
d6718dd1 1193
cd0b1709
VZ
1194\membersection{wxString::ToDouble}\label{wxstringtodouble}
1195
f6bcfd97 1196\constfunc{bool}{ToDouble}{\param{double}{ *val}}
cd0b1709 1197
b0b96f66
VZ
1198Attempts to convert the string to a floating point number. Returns \true on
1199success (the number is stored in the location pointed to by {\it val}) or \false
cd0b1709
VZ
1200if the string does not represent such number.
1201
f6bcfd97
BP
1202\wxheading{See also}
1203
1204\helpref{wxString::ToLong}{wxstringtolong},\\
1205\helpref{wxString::ToULong}{wxstringtoulong}
1206
d6718dd1 1207
cd0b1709
VZ
1208\membersection{wxString::ToLong}\label{wxstringtolong}
1209
538f35cc 1210\constfunc{bool}{ToLong}{\param{long}{ *val}, \param{int }{base = $10$}}
cd0b1709 1211
4eb438cf 1212Attempts to convert the string to a signed integer in base {\it base}. Returns
b0b96f66
VZ
1213\true on success in which case the number is stored in the location
1214pointed to by {\it val} or \false if the string does not represent a
4eb438cf
VZ
1215valid number in the given base.
1216
538f35cc
VZ
1217The value of {\it base} must be comprised between $2$ and $36$, inclusive, or
1218be a special value $0$ which means that the usual rules of {\tt C} numbers are
1219applied: if the number starts with {\tt 0x} it is considered to be in base
1220$16$, if it starts with {\tt 0} - in base $8$ and in base $10$ otherwise. Note
1221that you may not want to specify the base $0$ if you are parsing the numbers
1222which may have leading zeroes as they can yield unexpected (to the user not
1223familiar with C) results.
cd0b1709 1224
f6bcfd97
BP
1225\wxheading{See also}
1226
1227\helpref{wxString::ToDouble}{wxstringtodouble},\\
1228\helpref{wxString::ToULong}{wxstringtoulong}
1229
d6718dd1
VZ
1230
1231\membersection{wxString::ToLongLong}\label{wxstringtolonglong}
1232
1233\constfunc{bool}{ToLongLong}{\param{wxLongLong\_t}{ *val}, \param{int }{base = $10$}}
1234
1235This is exactly the same as \helpref{ToLong}{wxstringtolong} but works with 64
1236bit integer numbers.
1237
1238Notice that currently it doesn't work (always returns \false) if parsing of 64
1239bit numbers is not supported by the underlying C run-time library. Compilers
1240with C99 support and Microsoft Visual C++ version 7 and higher do support this.
1241
1242\wxheading{See also}
1243
1244\helpref{wxString::ToLong}{wxstringtolong},\\
1245\helpref{wxString::ToULongLong}{wxstringtoulonglong}
1246
1247
cd0b1709
VZ
1248\membersection{wxString::ToULong}\label{wxstringtoulong}
1249
538f35cc 1250\constfunc{bool}{ToULong}{\param{unsigned long}{ *val}, \param{int }{base = $10$}}
4eb438cf 1251
3980000c 1252Attempts to convert the string to an unsigned integer in base {\it base}.
b0b96f66
VZ
1253Returns \true on success in which case the number is stored in the
1254location pointed to by {\it val} or \false if the string does not
731fa21e
VZ
1255represent a valid number in the given base. Please notice that this function
1256behaves in the same way as the standard \texttt{strtoul()} and so it simply
1257converts negative numbers to unsigned representation instead of rejecting them
1258(e.g. $-1$ is returned as \texttt{ULONG\_MAX}).
cd0b1709 1259
ec64d632
VZ
1260See \helpref{wxString::ToLong}{wxstringtolong} for the more detailed
1261description of the {\it base} parameter.
cd0b1709 1262
f6bcfd97
BP
1263\wxheading{See also}
1264
1265\helpref{wxString::ToDouble}{wxstringtodouble},\\
1266\helpref{wxString::ToLong}{wxstringtolong}
1267
d6718dd1
VZ
1268
1269\membersection{wxString::ToULongLong}\label{wxstringtoulonglong}
1270
1271\constfunc{bool}{ToULongLong}{\param{wxULongLong\_t}{ *val}, \param{int }{base = $10$}}
1272
1273This is exactly the same as \helpref{ToULong}{wxstringtoulong} but works with 64
1274bit integer numbers.
1275
1276Please see \helpref{ToLongLong}{wxstringtolonglong} for additional remarks.
1277
1278
5f167b77
VS
1279\membersection{wxString::ToUTF8}\label{wxstringtoutf8}
1280
1281\constfunc{const char*}{ToUTF8}{\void}
1282
1283\constfunc{const wxCharBuffer}{ToUF8}{\void}
1284
1285Same as \helpref{utf8\_str}{wxstringutf8str}.
1286
1287
f7bd2698 1288\membersection{wxString::Trim}\label{wxstringtrim}
a660d684 1289
cc81d32f 1290\func{wxString\&}{Trim}{\param{bool}{ fromRight = true}}
a660d684 1291
4e43c815
VZ
1292Removes white-space (space, tabs, form feed, newline and carriage return) from
1293the left or from the right end of the string (right is default).
a660d684 1294
d6718dd1 1295
f7bd2698 1296\membersection{wxString::Truncate}\label{wxstringtruncate}
a660d684 1297
f7bd2698 1298\func{wxString\&}{Truncate}{\param{size\_t}{ len}}
a660d684 1299
f7bd2698 1300Truncate the string to the given length.
a660d684 1301
d6718dd1 1302
f7bd2698
JS
1303\membersection{wxString::UngetWriteBuf}\label{wxstringungetwritebuf}
1304
1305\func{void}{UngetWriteBuf}{\void}
1306
448025b0
VZ
1307\func{void}{UngetWriteBuf}{\param{size\_t }{len}}
1308
1309Puts the string back into a reasonable state (in which it can be used
1310normally), after
f7bd2698 1311\rtfsp\helpref{wxString::GetWriteBuf}{wxstringgetwritebuf} was called.
a660d684 1312
448025b0
VZ
1313The version of the function without the {\it len} parameter will calculate the
1314new string length itself assuming that the string is terminated by the first
1315{\tt NUL} character in it while the second one will use the specified length
1316and thus is the only version which should be used with the strings with
1317embedded {\tt NUL}s (it is also slightly more efficient as {\tt strlen()}
1318doesn't have to be called).
1319
24ad9318
VS
1320This method is deprecated, please use
1321\helpref{wxStringBuffer}{wxstringbuffer} or
1322\helpref{wxStringBufferLength}{wxstringbufferlength} instead.
1323
d6718dd1 1324
99f09bc1
VZ
1325\membersection{wxString::Upper}\label{wxstringupper}
1326
1327\constfunc{wxString}{Upper}{\void}
1328
1329Returns this string converted to upper case.
1330
d6718dd1 1331
99f09bc1 1332\membersection{wxString::UpperCase}\label{wxstringuppercase}
a660d684 1333
f7bd2698
JS
1334\func{void}{UpperCase}{\void}
1335
1336The same as MakeUpper.
a660d684 1337
b0b96f66
VZ
1338This is a wxWidgets 1.xx compatibility function; you should not use it in new code.
1339
d6718dd1 1340
5f167b77
VS
1341\membersection{wxString::utf8\_str}\label{wxstringutf8str}
1342
1343\constfunc{const char*}{utf8\_str}{\void}
1344
1345\constfunc{const wxCharBuffer}{utf8\_str}{\void}
1346
1347Converts the strings contents to UTF-8 and returns it either as a temporary
1348wxCharBuffer object or as a pointer to the internal string contents in
1349UTF-8 build.
1350% FIXME-UTF8: link to a topic explaining UTF-8 build here
1351
1352
bd8465ff
VS
1353\membersection{wxString::wc\_str}\label{wxstringwcstr}
1354
5487ff0f 1355\constfunc{const wchar\_t*}{wc\_str}{\param{const wxMBConv\&}{ conv}}
bd8465ff 1356
5487ff0f 1357\constfunc{const wxWCharBuffer}{wc\_str}{\param{const wxMBConv\&}{ conv}}
bd8465ff
VS
1358
1359Returns wide character representation of the string.
1360In ANSI build, converts using \arg{conv}'s \helpref{cMB2WC}{wxmbconvcmb2wc}
1361method and returns wxWCharBuffer. In Unicode build, this function is same
1362as \helpref{c\_str}{wxstringcstr}.
1363The macro wxWX2WCbuf is defined as the correct return type (without const).
1364
1365\wxheading{See also}
1366
1367\helpref{wxMBConv}{wxmbconv},
1368\helpref{c\_str}{wxstringcstr}, \helpref{mb\_str}{wxstringwcstr},
ef0f1387
VS
1369\helpref{fn\_str}{wxstringfnstr}, \helpref{wchar\_str}{wxstringwcharstr}
1370
1371\membersection{wxString::wchar\_str}\label{wxstringwcharstr}
1372
1373\constfunc{wxWritableWCharBuffer}{wchar\_str}{\void}
1374
1375Returns an object with string data that is implicitly convertible to
e6310bbc
VS
1376{\tt char*} pointer. Note that changes to the returned buffer may or may
1377not be lost (depending on the build) and so this function is only usable for
1378passing strings to legacy libraries that don't have const-correct API. Use
1379\helpref{wxStringBuffer}{wxstringbuffer} if you want to modify the string.
ef0f1387
VS
1380
1381\wxheading{See also}
1382
1383\helpref{mb\_str}{wxstringmbstr}, \helpref{wc\_str}{wxstringwcstr},
1384\helpref{fn\_str}{wxstringfnstr}, \helpref{c\_str}{wxstringcstr},
1385\helpref{char\_str}{wxstringcharstr}
bd8465ff 1386
d6718dd1 1387
99f09bc1
VZ
1388\membersection{wxString::operator!}\label{wxstringoperatornot}
1389
1390\constfunc{bool}{operator!}{\void}
1391
b0b96f66
VZ
1392Empty string is \false, so !string will only return \true if the string is empty.
1393This allows the tests for NULLness of a {\it const wxChar *} pointer and emptiness
99f09bc1
VZ
1394of the string to look the same in the code and makes it easier to port old code
1395to wxString.
1396
1397See also \helpref{IsEmpty()}{wxstringisempty}.
1398
d6718dd1 1399
a660d684
KB
1400\membersection{wxString::operator $=$}\label{wxstringoperatorassign}
1401
f7bd2698
JS
1402\func{wxString\&}{operator $=$}{\param{const wxString\&}{ str}}
1403
b0b96f66 1404\func{wxString\&}{operator $=$}{\param{const wxChar*}{ psz}}
f7bd2698 1405
b0b96f66 1406\func{wxString\&}{operator $=$}{\param{wxChar}{ c}}
a660d684 1407
99f09bc1
VZ
1408Assignment: the effect of each operation is the same as for the corresponding
1409constructor (see \helpref{wxString constructors}{wxstringconstruct}).
5de76427 1410
d6718dd1 1411
f6bcfd97 1412\membersection{wxString::operator $+$}\label{wxstringoperatorplus}
5de76427 1413
dbd94b75
KH
1414Concatenation: all these operators return a new string equal to the
1415concatenation of the operands.
5de76427
JS
1416
1417\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
1418
b0b96f66 1419\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ y}}
5de76427 1420
b0b96f66 1421\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{wxChar}{ y}}
5de76427 1422
b0b96f66 1423\func{wxString}{operator $+$}{\param{const wxChar*}{ x}, \param{const wxString\&}{ y}}
5de76427 1424
d6718dd1 1425
99f09bc1 1426\membersection{wxString::operator $+=$}\label{wxstringplusequal}
a660d684 1427
f7bd2698
JS
1428\func{void}{operator $+=$}{\param{const wxString\&}{ str}}
1429
b0b96f66 1430\func{void}{operator $+=$}{\param{const wxChar*}{ psz}}
f7bd2698 1431
b0b96f66 1432\func{void}{operator $+=$}{\param{wxChar}{ c}}
a660d684 1433
99f09bc1 1434Concatenation in place: the argument is appended to the string.
a660d684 1435
d6718dd1 1436
a660d684
KB
1437\membersection{wxString::operator []}\label{wxstringoperatorbracket}
1438
41884be3 1439\func{wxChar\&}{operator []}{\param{size\_t}{ i}}
f7bd2698 1440
41884be3 1441\constfunc{wxChar}{operator []}{\param{size\_t}{ i}}
f7bd2698 1442
41884be3
JS
1443\func{wxChar\&}{operator []}{\param{int}{ i}}
1444
1445\constfunc{wxChar}{operator []}{\param{int}{ i}}
a660d684
KB
1446
1447Element extraction.
1448
d6718dd1 1449
a660d684
KB
1450\membersection{wxString::operator ()}\label{wxstringoperatorparenth}
1451
f7bd2698
JS
1452\func{wxString}{operator ()}{\param{size\_t}{ start}, \param{size\_t}{ len}}
1453
1454Same as Mid (substring extraction).
a660d684 1455
d6718dd1 1456
a660d684 1457\membersection{wxString::operator \cinsert}\label{wxstringoperatorout}
f7bd2698 1458
037267e1 1459\func{wxString\&}{operator \cinsert}{\param{const wxString\&}{ str}}
f7bd2698 1460
b0b96f66 1461\func{wxString\&}{operator \cinsert}{\param{const wxChar*}{ psz}}
f7bd2698 1462
b0b96f66 1463\func{wxString\&}{operator \cinsert}{\param{wxChar }{ch}}
f7bd2698
JS
1464
1465Same as $+=$.
a660d684 1466
99f09bc1
VZ
1467\func{wxString\&}{operator \cinsert}{\param{int}{ i}}
1468
1469\func{wxString\&}{operator \cinsert}{\param{float}{ f}}
1470
1471\func{wxString\&}{operator \cinsert}{\param{double}{ d}}
1472
1473These functions work as C++ stream insertion operators: they insert the given
1474value into the string. Precision or format cannot be set using them, you can use
1475\helpref{Printf}{wxstringprintf} for this.
1476
d6718dd1 1477
a660d684 1478\membersection{wxString::operator \cextract}\label{wxstringoperatorin}
a660d684 1479
f7bd2698 1480\func{friend istream\&}{operator \cextract}{\param{istream\&}{ is}, \param{wxString\&}{ str}}
a660d684 1481
f7bd2698 1482Extraction from a stream.
a660d684 1483
d6718dd1 1484
b0b96f66 1485\membersection{wxString::operator const wxChar*}\label{wxstringoperatorconstcharpt}
a660d684 1486
b0b96f66 1487\constfunc{}{operator const wxChar*}{\void}
a660d684 1488
f7bd2698 1489Implicit conversion to a C string.
a660d684 1490
d6718dd1 1491
99f09bc1 1492\membersection{Comparison operators}\label{wxstringcomparison}
a660d684 1493
f7bd2698 1494\func{bool}{operator $==$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
a660d684 1495
b0b96f66 1496\func{bool}{operator $==$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ t}}
a660d684 1497
f7bd2698 1498\func{bool}{operator $!=$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
a660d684 1499
b0b96f66 1500\func{bool}{operator $!=$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ t}}
a660d684 1501
f7bd2698 1502\func{bool}{operator $>$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
a660d684 1503
b0b96f66 1504\func{bool}{operator $>$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ t}}
a660d684 1505
f7bd2698 1506\func{bool}{operator $>=$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
a660d684 1507
b0b96f66 1508\func{bool}{operator $>=$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ t}}
a660d684 1509
f7bd2698 1510\func{bool}{operator $<$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
a660d684 1511
b0b96f66 1512\func{bool}{operator $<$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ t}}
a660d684 1513
f7bd2698 1514\func{bool}{operator $<=$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}
a660d684 1515
b0b96f66 1516\func{bool}{operator $<=$}{\param{const wxString\&}{ x}, \param{const wxChar*}{ t}}
a660d684 1517
f7bd2698 1518\wxheading{Remarks}
a660d684 1519
f7bd2698 1520These comparisons are case-sensitive.
a660d684 1521
1d218550
VZ
1522
1523\section{\class{wxStringBuffer}}\label{wxstringbuffer}
1524
1525This tiny class allows to conveniently access the \helpref{wxString}{wxstring}
dbd94b75 1526internal buffer as a writable pointer without any risk of forgetting to restore
1d218550
VZ
1527the string to the usable state later.
1528
1529For example, assuming you have a low-level OS function called
1530{\tt GetMeaningOfLifeAsString(char *)} returning the value in the provided
1531buffer (which must be writable, of course) you might call it like this:
1532
1533\begin{verbatim}
1534 wxString theAnswer;
1535 GetMeaningOfLifeAsString(wxStringBuffer(theAnswer, 1024));
1536 if ( theAnswer != "42" )
1537 {
1538 wxLogError("Something is very wrong!");
1539 }
1540\end{verbatim}
1541
5687a67c 1542Note that the exact usage of this depends on whether on not wxUSE\_STL is enabled. If
3103e8a9 1543wxUSE\_STL is enabled, wxStringBuffer creates a separate empty character buffer, and
5687a67c
RN
1544if wxUSE\_STL is disabled, it uses GetWriteBuf() from wxString, keeping the same buffer
1545wxString uses intact. In other words, relying on wxStringBuffer containing the old
1546wxString data is probably not a good idea if you want to build your program in both
1547with and without wxUSE\_STL.
1548
1d218550
VZ
1549\wxheading{Derived from}
1550
1551None
1552
1553\wxheading{Include files}
1554
1555<wx/string.h>
1556
1557\latexignore{\rtfignore{\wxheading{Members}}}
1558
d6718dd1 1559
08f1d438 1560\membersection{wxStringBuffer::wxStringBuffer}\label{wxstringbufferctor}
1d218550
VZ
1561
1562\func{}{wxStringBuffer}{\param{const wxString\& }{str}, \param{size\_t }{len}}
1563
1564Constructs a writable string buffer object associated with the given string
2edb0bde 1565and containing enough space for at least {\it len} characters. Basically, this
1d218550
VZ
1566is equivalent to calling \helpref{GetWriteBuf}{wxstringgetwritebuf} and
1567saving the result.
1568
d6718dd1 1569
08f1d438 1570\membersection{wxStringBuffer::\destruct{wxStringBuffer}}\label{wxstringbufferdtor}
1d218550
VZ
1571
1572\func{}{\destruct{wxStringBuffer}}{\void}
1573
1574Restores the string passed to the constructor to the usable state by calling
1575\helpref{UngetWriteBuf}{wxstringungetwritebuf} on it.
1576
d6718dd1 1577
08f1d438 1578\membersection{wxStringBuffer::operator wxChar *}\label{wxstringbufferwxchar}
1d218550 1579
c298ea48
RN
1580\func{wxChar *}{operator wxChar *}{\void}
1581
1582Returns the writable pointer to a buffer of the size at least equal to the
1583length specified in the constructor.
1584
1585
1586
1587\section{\class{wxStringBufferLength}}\label{wxstringbufferlength}
1588
1589This tiny class allows to conveniently access the \helpref{wxString}{wxstring}
1590internal buffer as a writable pointer without any risk of forgetting to restore
1591the string to the usable state later, and allows the user to set the internal
1592length of the string.
1593
1594For example, assuming you have a low-level OS function called
1595{\tt int GetMeaningOfLifeAsString(char *)} copying the value in the provided
1596buffer (which must be writable, of course), and returning the actual length
1597of the string, you might call it like this:
1598
1599\begin{verbatim}
1600 wxString theAnswer;
1601 wxStringBuffer theAnswerBuffer(theAnswer, 1024);
1602 int nLength = GetMeaningOfLifeAsString(theAnswerBuffer);
1603 theAnswerBuffer.SetLength(nLength);
1604 if ( theAnswer != "42" )
1605 {
1606 wxLogError("Something is very wrong!");
1607 }
1608\end{verbatim}
1609
5687a67c 1610Note that the exact usage of this depends on whether on not wxUSE\_STL is enabled. If
3103e8a9 1611wxUSE\_STL is enabled, wxStringBuffer creates a separate empty character buffer, and
5687a67c
RN
1612if wxUSE\_STL is disabled, it uses GetWriteBuf() from wxString, keeping the same buffer
1613wxString uses intact. In other words, relying on wxStringBuffer containing the old
1614wxString data is probably not a good idea if you want to build your program in both
1615with and without wxUSE\_STL.
1616
c298ea48
RN
1617Note that SetLength {\tt must} be called before wxStringBufferLength destructs.
1618
1619\wxheading{Derived from}
1620
1621None
1622
1623\wxheading{Include files}
1624
1625<wx/string.h>
1626
1627\latexignore{\rtfignore{\wxheading{Members}}}
1628
d6718dd1 1629
c298ea48
RN
1630\membersection{wxStringBufferLength::wxStringBufferLength}\label{wxstringbufferlengthctor}
1631
9a75ba66 1632\func{}{wxStringBufferLength}{\param{const wxString\& }{str}, \param{size\_t }{len}}
c298ea48
RN
1633
1634Constructs a writable string buffer object associated with the given string
1635and containing enough space for at least {\it len} characters. Basically, this
1636is equivalent to calling \helpref{GetWriteBuf}{wxstringgetwritebuf} and
1637saving the result.
1638
d6718dd1 1639
c298ea48
RN
1640\membersection{wxStringBufferLength::\destruct{wxStringBufferLength}}\label{wxstringbufferlengthdtor}
1641
1642\func{}{\destruct{wxStringBufferLength}}{\void}
1643
1644Restores the string passed to the constructor to the usable state by calling
1645\helpref{UngetWriteBuf}{wxstringungetwritebuf} on it.
1646
d6718dd1 1647
c298ea48
RN
1648\membersection{wxStringBufferLength::SetLength}\label{wxstringbufferlengthsetlength}
1649
1650\func{void}{SetLength}{\param{size\_t }{nLength}}
1651
1652Sets the internal length of the string referred to by wxStringBufferLength to
1653{\it nLength} characters.
1654
1655Must be called before wxStringBufferLength destructs.
1656
d6718dd1 1657
c298ea48
RN
1658\membersection{wxStringBufferLength::operator wxChar *}\label{wxstringbufferlengthwxchar}
1659
1660\func{wxChar *}{operator wxChar *}{\void}
1d218550
VZ
1661
1662Returns the writable pointer to a buffer of the size at least equal to the
1663length specified in the constructor.
1664
1665