// Purpose: interface of wxStringBuffer, wxString
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
Constructs a string from @a str using the using the current locale encoding
to convert it to Unicode (wxConvLibc).
+
+ @see ToStdString()
*/
wxString(const std::string& str);
/**
Constructs a string from @a str.
+
+ @see ToStdWstring()
*/
wxString(const std::wstring& str);
void SetChar(size_t n, wxUniChar ch);
/**
- Returns a the last character.
+ Returns the last character.
This is a wxWidgets 1.xx compatibility function;
you should not use it in new code.
const wxScopedCharBuffer utf8_str() const;
/**
- Converts the strings contents to the wide character represention
+ Converts the strings contents to the wide character representation
and returns it as a temporary wxWCharBuffer object (Unix and OS X)
or returns a pointer to the internal string contents in wide character
mode (Windows).
@see wxString::From8BitData()
*/
- const char* To8BitData() const;
-
- /**
- @overload
- */
- const wxCharBuffer To8BitData() const;
+ const wxScopedCharBuffer To8BitData() const;
/**
Converts the string to an ASCII, 7-bit string in the form of
*/
const wxCharBuffer ToAscii() const;
+ /**
+ Return the string as an std::string in current locale encoding.
+
+ Note that if the conversion of (Unicode) string contents to the current
+ locale fails, the return string will be empty. Be sure to check for
+ this to avoid silent data loss.
+
+ Instead of using this function it's also possible to write
+ @code
+ std::string s;
+ wxString wxs;
+ ...
+ s = std::string(wxs);
+ @endcode
+ but using ToStdString() may make the code more clear.
+
+ @since 2.9.1
+ */
+ std::string ToStdString() const;
+
+ /**
+ Return the string as an std::wstring.
+
+ Unlike ToStdString(), there is no danger of data loss when using this
+ function.
+
+ @since 2.9.1
+ */
+ std::wstring ToStdWstring() const;
+
/**
Same as utf8_str().
*/
wxString& operator<<(wchar_t ch);
wxString& operator<<(const wxCharBuffer& s);
wxString& operator<<(const wxWCharBuffer& s);
+ wxString& operator<<(wxUniChar ch);
wxString& operator<<(wxUniCharRef ch);
wxString& operator<<(unsigned int ui);
wxString& operator<<(long l);
/**
Gets all characters before the first occurrence of @e ch.
Returns the whole string if @a ch is not found.
+
+ @param ch The character to look for.
+ @param rest Filled with the part of the string following the first
+ occurrence of @a ch or cleared if it was not found. The same string
+ is returned by AfterFirst() but it is more efficient to use this
+ output parameter if both the "before" and "after" parts are needed
+ than calling both functions one after the other. This parameter is
+ available in wxWidgets version 2.9.2 and later only.
+ @return Part of the string before the first occurrence of @a ch.
*/
- wxString BeforeFirst(wxUniChar ch) const;
+ wxString BeforeFirst(wxUniChar ch, wxString *rest = NULL) const;
/**
Gets all characters before the last occurrence of @e ch.
Returns the empty string if @a ch is not found.
+
+ @param ch The character to look for.
+ @param rest Filled with the part of the string following the last
+ occurrence of @a ch or the copy of this string if it was not found.
+ The same string is returned by AfterLast() but it is more efficient
+ to use this output parameter if both the "before" and "after" parts
+ are needed than calling both functions one after the other. This
+ parameter is available in wxWidgets version 2.9.2 and later only.
+ @return Part of the string before the last occurrence of @a ch.
*/
- wxString BeforeLast(wxUniChar ch) const;
+ wxString BeforeLast(wxUniChar ch, wxString *rest = NULL) const;
//@}
you are sure that this string contains a floating point number formatted with
the rules of the locale currently in use (see wxLocale).
- Refer to the docs of the standard function @c strtod() for more details about
- the supported syntax.
+ Also notice that even this function is locale-specific it does not
+ support strings with thousands separators in them, even if the current
+ locale uses digits grouping. You may use wxNumberFormatter::FromString()
+ to parse such strings.
+
+ Please refer to the documentation of the standard function @c strtod()
+ for more details about the supported syntax.
@see ToCDouble(), ToLong(), ToULong()
*/
that this string contains an integer number formatted with
the rules of the locale currently in use (see wxLocale).
- Refer to the docs of the standard function @c strtol() for more details about
- the supported syntax.
+ As with ToDouble(), this function does not support strings containing
+ thousands separators even if the current locale uses digits grouping.
+ You may use wxNumberFormatter::FromString() to parse such strings.
+
+ Please refer to the documentation of the standard function @c strtol()
+ for more details about the supported syntax.
@see ToCDouble(), ToDouble(), ToULong()
*/
Note that if @c wxUSE_PRINTF_POS_PARAMS is set to 1, then this function supports
Unix98-style positional parameters:
+ @code
+ wxString str;
+
+ str.Printf(wxT("%d %d %d"), 1, 2, 3);
+ // str now contains "1 2 3"
+
+ str.Printf(wxT("%2$d %3$d %1$d"), 1, 2, 3);
+ // str now contains "2 3 1"
+ @endcode
+
@note This function will use a safe version of @e vsprintf() (usually called
@e vsnprintf()) whenever available to always allocate the buffer of correct
size. Unfortunately, this function is not available on all platforms and the
/**
@member_group_name{iter, Iterator interface}
- These methods return iterators to the beginnnig or end of the string.
+ These methods return iterators to the beginning or end of the string.
Please see any STL reference (e.g. http://www.cppreference.com/wiki/string/start)
for their documentation.
// STATIC FUNCTIONS
- // Keep these functions separed from the other groups or Doxygen gets confused
+ // Keep these functions separated from the other groups or Doxygen gets confused
// -----------------------------------------------------------------------------
/**
static wxString FromAscii(char c);
//@}
+ /**
+ Returns a string with the textual representation of the number in C
+ locale.
+
+ Unlike FromDouble() the string returned by this function always uses
+ the period character as decimal separator, independently of the current
+ locale. Otherwise its behaviour is identical to the other function.
+
+ @since 2.9.1
+
+ @see ToCDouble()
+ */
+ static wxString FromCDouble(double val, int precision = -1);
+
+ /**
+ Returns a string with the textual representation of the number.
+
+ For the default value of @a precision, this function behaves as a
+ simple wrapper for @code wxString::Format("%g", val) @endcode. If @a
+ precision is positive (or zero), the @c %.Nf format is used with the
+ given precision value.
+
+ Notice that the string returned by this function uses the decimal
+ separator appropriate for the current locale, e.g. @c "," and not a
+ period in French locale. Use FromCDouble() if this is unwanted.
+
+ @param val
+ The value to format.
+ @param precision
+ The number of fractional digits to use in or -1 to use the most
+ appropriate format. This parameter is new in wxWidgets 2.9.2.
+
+ @since 2.9.1
+
+ @see ToDouble()
+ */
+ static wxString FromDouble(double val, int precision = -1);
+
//@{
/**
Converts C string encoded in UTF-8 to wxString.