QString: add resize(int, QChar)

This will be used in QTextStream to speed up padding processing.

[ChangeLog][QtCore][QString] Added resize(int, QChar) overload.

Change-Id: Id51f8cdacb167310157100b05cacf20e9a5d2716
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
Marc Mutz 2015-10-21 22:20:13 +02:00
parent 050b682412
commit 8f166ccf40
4 changed files with 39 additions and 4 deletions

View File

@ -625,7 +625,7 @@ void Widget::resizeFunction()
//! [46]
QString t = "Hello";
t += QString(10, 'X');
r.resize(t.size() + 10, 'X');
// t == "HelloXXXXXXXXXX"
//! [46]

View File

@ -1652,9 +1652,7 @@ QString::QString(QChar ch)
\snippet qstring/main.cpp 45
If you want to append a certain number of identical characters to
the string, use \l operator+=() as follows rather than resize():
\snippet qstring/main.cpp 46
the string, use the \l {QString::}{resize(int, QChar)} overload.
If you want to expand the string so that it reaches a certain
width and fill the new positions with a particular character, use
@ -1694,6 +1692,25 @@ void QString::resize(int size)
}
}
/*!
\overload
\since 5.7
Unlike \l {QString::}{resize(int)}, this overload
initializes the new characters to \a fillChar:
\snippet qstring/main.cpp 46
*/
void QString::resize(int size, QChar fillChar)
{
const int oldSize = length();
resize(size);
const int difference = length() - oldSize;
if (difference > 0)
std::fill_n(d->begin() + oldSize, difference, fillChar.unicode());
}
/*! \fn int QString::capacity() const
Returns the maximum number of characters that can be stored in

View File

@ -233,6 +233,7 @@ public:
inline int length() const;
inline bool isEmpty() const;
void resize(int size);
void resize(int size, QChar fillChar);
QString &fill(QChar c, int size = -1);
void truncate(int pos);

View File

@ -556,6 +556,7 @@ private slots:
void nanAndInf();
void compare_data();
void compare();
void resize();
void resizeAfterFromRawData();
void resizeAfterReserve();
void resizeWithNegative() const;
@ -6013,6 +6014,22 @@ void tst_QString::compare()
}
}
void tst_QString::resize()
{
QString s = QLatin1String("hello world");
s.resize(5);
QCOMPARE(s, QLatin1String("hello"));
s.resize(8);
QCOMPARE(s.size(), 8);
QVERIFY(s.startsWith(QLatin1String("hello")));
s.resize(10, QLatin1Char('n'));
QCOMPARE(s.size(), 10);
QVERIFY(s.startsWith(QLatin1String("hello")));
QCOMPARE(s.right(2), QLatin1String("nn"));
}
void tst_QString::resizeAfterFromRawData()
{
QString buffer("hello world");