Improve QStringBuilder docs

- Mention you can build QByteArrays, too
- Nicer list of types that can be used, separate for QByteArray and
  QString

Change-Id: Ia91445f0cb4872bab12a55f4812c283e9c38dba4
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
Marc Mutz 2017-03-30 19:13:58 +02:00
parent cdc5f47aeb
commit 11ed95ac9c

View File

@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE
\reentrant \reentrant
\since 4.6 \since 4.6
\brief The QStringBuilder class is a template class that provides a facility to build up QStrings from smaller chunks. \brief The QStringBuilder class is a template class that provides a facility to build up QStrings and QByteArrays from smaller chunks.
\ingroup tools \ingroup tools
\ingroup shared \ingroup shared
@ -58,22 +58,34 @@ QT_BEGIN_NAMESPACE
To build a QString by multiple concatenations, QString::operator+() To build a QString by multiple concatenations, QString::operator+()
is typically used. This causes \e{n - 1} reallocations when building is typically used. This causes \e{n - 1} allocations when building
a string from \e{n} chunks. a string from \e{n} chunks. The same is true for QByteArray.
QStringBuilder uses expression templates to collect the individual QStringBuilder uses expression templates to collect the individual
chunks, compute the total size, allocate the required amount of chunks, compute the total size, allocate the required amount of
memory for the final QString object, and copy the chunks into the memory for the final string object, and copy the chunks into the
allocated memory. allocated memory.
The QStringBuilder class is not to be used explicitly in user The QStringBuilder class is not to be used explicitly in user
code. Instances of the class are created as return values of the code. Instances of the class are created as return values of the
operator%() function, acting on objects of type QString, operator%() function, acting on objects of the following types:
QLatin1String, QStringRef, QChar, QCharRef,
QLatin1Char, and \c char. For building QStrings:
\li QString, QStringRef,
\li QChar, QCharRef, QLatin1Char,
\li QLatin1String,
\li QByteArray, \c char, \c{const char[]}.
The types in the last list point are only available when
QT_NO_CAST_FROM_ASCII is not defined.
For building QByteArrays:
\li QByteArray, \c char, \c{const char[]}.
Concatenating strings with operator%() generally yields better Concatenating strings with operator%() generally yields better
performance then using \c QString::operator+() on the same chunks performance than using \c QString::operator+() on the same chunks
if there are three or more of them, and performs equally well in other if there are three or more of them, and performs equally well in other
cases. cases.