From: Vadim Zeitlin Date: Wed, 20 Feb 2002 13:24:19 +0000 (+0000) Subject: use base 10 by default in wxString::To[U]Long X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/538f35ccf43be97a317a1a80ae4b5c1b29068b01 use base 10 by default in wxString::To[U]Long git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/latex/wx/wxstring.tex b/docs/latex/wx/wxstring.tex index deeba32b3c..6cc43e1378 100644 --- a/docs/latex/wx/wxstring.tex +++ b/docs/latex/wx/wxstring.tex @@ -922,21 +922,20 @@ if the string does not represent such number. \membersection{wxString::ToLong}\label{wxstringtolong} -\constfunc{bool}{ToLong}{\param{long}{ *val}, \param{int }{base = $0$}} +\constfunc{bool}{ToLong}{\param{long}{ *val}, \param{int }{base = $10$}} Attempts to convert the string to a signed integer in base {\it base}. Returns {\tt TRUE} on success in which case the number is stored in the location pointed to by {\it val} or {\tt FALSE} if the string does not represent a valid number in the given base. -The default value of {\it base} $0$ is special and means that the usual rules -of {\tt C} numbers are applied: if the number starts with {\tt 0x} it is -considered to be in base $16$, if it starts with {\tt 0} - in base $8$ and in -base $10$ otherwise. Note that you may want to specify the base $10$ explicitly -if you are parsing the numbers which may have leading zeroes as otherwise the -string {\tt "09"} may not be parsed correctly: it would be understood as an -octal number because of the leading zero and the parsing would then fail as -{\tt '9'} is not a valid octal digit. +The value of {\it base} must be comprised between $2$ and $36$, inclusive, or +be a special value $0$ which means that the usual rules of {\tt C} numbers are +applied: if the number starts with {\tt 0x} it is considered to be in base +$16$, if it starts with {\tt 0} - in base $8$ and in base $10$ otherwise. Note +that you may not want to specify the base $0$ if you are parsing the numbers +which may have leading zeroes as they can yield unexpected (to the user not +familiar with C) results. \wxheading{See also} @@ -945,7 +944,7 @@ octal number because of the leading zero and the parsing would then fail as \membersection{wxString::ToULong}\label{wxstringtoulong} -\constfunc{bool}{ToULong}{\param{unsigned long}{ *val}, \param{int }{base = $0$}} +\constfunc{bool}{ToULong}{\param{unsigned long}{ *val}, \param{int }{base = $10$}} Attempts to convert the string to a ansigned integer in base {\it base}. Returns {\tt TRUE} on success in which case the number is stored in the diff --git a/include/wx/string.h b/include/wx/string.h index 998946f7dc..51583c89a3 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -673,12 +673,15 @@ public: // check if the string contents matches a mask containing '*' and '?' bool Matches(const wxChar *szMask) const; - // conversion to numbers: all functions return TRUE only if the whole string - // is a number and put the value of this number into the pointer provided + // conversion to numbers: all functions return TRUE only if the whole + // string is a number and put the value of this number into the pointer + // provided, the base is the numeric base in which the conversion should be + // done and must be comprised between 2 and 36 or be 0 in which case the + // standard C rules apply (leading '0' => octal, "0x" => hex) // convert to a signed integer - bool ToLong(long *val, int base = 0) const; + bool ToLong(long *val, int base = 10) const; // convert to an unsigned integer - bool ToULong(unsigned long *val, int base = 0) const; + bool ToULong(unsigned long *val, int base = 10) const; // convert to a double bool ToDouble(double *val) const; diff --git a/src/common/string.cpp b/src/common/string.cpp index 4a1c6d95a9..d8a1d812b2 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1097,6 +1097,7 @@ int wxString::Find(const wxChar *pszSub) const bool wxString::ToLong(long *val, int base) const { wxCHECK_MSG( val, FALSE, _T("NULL pointer in wxString::ToLong") ); + wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); const wxChar *start = c_str(); wxChar *end; @@ -1110,6 +1111,7 @@ bool wxString::ToLong(long *val, int base) const bool wxString::ToULong(unsigned long *val, int base) const { wxCHECK_MSG( val, FALSE, _T("NULL pointer in wxString::ToULong") ); + wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); const wxChar *start = c_str(); wxChar *end;