Add numeric conversion methods to QLatin1String
[ChangeLog][QtCore][QLatin1String] Added numeric conversion methods. Task-number: QTBUG-98433 Change-Id: I414577ae715debe3d5ba9c6a160859aca790e017 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This commit is contained in:
parent
bb30beb726
commit
f39f539858
@ -10130,6 +10130,62 @@ QString &QString::setRawData(const QChar *unicode, qsizetype size)
|
||||
equal to string \a s2; otherwise returns \c false.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn qlonglong QLatin1String::toLongLong(bool *ok, int base) const
|
||||
\fn qulonglong QLatin1String::toULongLong(bool *ok, int base) const
|
||||
\fn int QLatin1String::toInt(bool *ok, int base) const
|
||||
\fn uint QLatin1String::toUInt(bool *ok, int base) const
|
||||
\fn long QLatin1String::toLong(bool *ok, int base) const
|
||||
\fn ulong QLatin1String::toULong(bool *ok, int base) const
|
||||
\fn short QLatin1String::toShort(bool *ok, int base) const
|
||||
\fn ushort QLatin1String::toUShort(bool *ok, int base) const
|
||||
|
||||
\since 6.4
|
||||
|
||||
Returns this QLatin1String converted to a corresponding numeric value using
|
||||
base \a base, which is ten by default. Bases 0 and 2 through 36 are supported,
|
||||
using letters for digits beyond 9; A is ten, B is eleven and so on.
|
||||
|
||||
If \a base is 0, the base is determined automatically using the following
|
||||
rules: if the Latin-1 string begins with "0x", the rest of it is read as
|
||||
hexadecimal (base 16); otherwise, if it begins with "0", the rest of it is
|
||||
read as octal (base 8); otherwise it is read as decimal.
|
||||
|
||||
Returns 0 if the conversion fails.
|
||||
|
||||
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
||||
to \c false, and success by setting *\a{ok} to \c true.
|
||||
|
||||
//! [latin1-numeric-conversion-note]
|
||||
\note The conversion of the number is performed in the default C locale,
|
||||
regardless of the user's locale. Use QLocale to perform locale-aware
|
||||
conversions between numbers and strings.
|
||||
|
||||
This function ignores leading and trailing spacing characters.
|
||||
//! [latin1-numeric-conversion-note]
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn double QLatin1String::toDouble(bool *ok) const
|
||||
\fn float QLatin1String::toFloat(bool *ok) const
|
||||
\since 6.4
|
||||
|
||||
Returns this QLatin1String converted to a corresponding floating-point value.
|
||||
|
||||
Returns an infinity if the conversion overflows or 0.0 if the
|
||||
conversion fails for other reasons (e.g. underflow).
|
||||
|
||||
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
||||
to \c false, and success by setting *\a{ok} to \c true.
|
||||
|
||||
\warning The QLatin1String content may only contain valid numerical
|
||||
characters which includes the plus/minus sign, the character e used in
|
||||
scientific notation, and the decimal point. Including the unit or additional
|
||||
characters leads to a conversion error.
|
||||
|
||||
\include qstring.cpp latin1-numeric-conversion-note
|
||||
*/
|
||||
|
||||
#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
|
||||
/*!
|
||||
\fn QDataStream &operator<<(QDataStream &stream, const QString &string)
|
||||
|
@ -177,6 +177,37 @@ public:
|
||||
[[nodiscard]] qsizetype lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
|
||||
{ return QtPrivate::lastIndexOf(*this, from, QStringView(&c, 1), cs); }
|
||||
|
||||
[[nodiscard]] short toShort(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<short>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] ushort toUShort(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<ushort>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] int toInt(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<int>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] uint toUInt(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<uint>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] long toLong(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<long>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] ulong toULong(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<ulong>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] qlonglong toLongLong(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<qlonglong>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] qulonglong toULongLong(bool *ok = nullptr, int base = 10) const
|
||||
{ return QtPrivate::toIntegral<qulonglong>(QByteArrayView(*this), ok, base); }
|
||||
[[nodiscard]] float toFloat(bool *ok = nullptr) const
|
||||
{
|
||||
const auto r = QtPrivate::toFloat(*this);
|
||||
if (ok)
|
||||
*ok = bool(r);
|
||||
return r.value_or(0.0f);
|
||||
}
|
||||
[[nodiscard]] double toDouble(bool *ok = nullptr) const
|
||||
{
|
||||
const auto r = QtPrivate::toDouble(*this);
|
||||
if (ok)
|
||||
*ok = bool(r);
|
||||
return r.value_or(0.0);
|
||||
}
|
||||
|
||||
using value_type = const char;
|
||||
using reference = value_type&;
|
||||
using const_reference = reference;
|
||||
|
@ -714,6 +714,8 @@ private Q_SLOTS:
|
||||
void toNumber_QStringView() { toNumber_impl<QStringView>(); }
|
||||
void toNumber_QByteArray_data() { toNumber_data(); }
|
||||
void toNumber_QByteArray() { toNumber_impl<QByteArray>(); }
|
||||
void toNumber_QLatin1String_data() { toNumber_data(); }
|
||||
void toNumber_QLatin1String() { toNumber_impl<QLatin1String>(); }
|
||||
|
||||
private:
|
||||
void count_data();
|
||||
|
Loading…
Reference in New Issue
Block a user