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:
parent
050b682412
commit
8f166ccf40
@ -625,7 +625,7 @@ void Widget::resizeFunction()
|
|||||||
|
|
||||||
//! [46]
|
//! [46]
|
||||||
QString t = "Hello";
|
QString t = "Hello";
|
||||||
t += QString(10, 'X');
|
r.resize(t.size() + 10, 'X');
|
||||||
// t == "HelloXXXXXXXXXX"
|
// t == "HelloXXXXXXXXXX"
|
||||||
//! [46]
|
//! [46]
|
||||||
|
|
||||||
|
@ -1652,9 +1652,7 @@ QString::QString(QChar ch)
|
|||||||
\snippet qstring/main.cpp 45
|
\snippet qstring/main.cpp 45
|
||||||
|
|
||||||
If you want to append a certain number of identical characters to
|
If you want to append a certain number of identical characters to
|
||||||
the string, use \l operator+=() as follows rather than resize():
|
the string, use the \l {QString::}{resize(int, QChar)} overload.
|
||||||
|
|
||||||
\snippet qstring/main.cpp 46
|
|
||||||
|
|
||||||
If you want to expand the string so that it reaches a certain
|
If you want to expand the string so that it reaches a certain
|
||||||
width and fill the new positions with a particular character, use
|
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
|
/*! \fn int QString::capacity() const
|
||||||
|
|
||||||
Returns the maximum number of characters that can be stored in
|
Returns the maximum number of characters that can be stored in
|
||||||
|
@ -233,6 +233,7 @@ public:
|
|||||||
inline int length() const;
|
inline int length() const;
|
||||||
inline bool isEmpty() const;
|
inline bool isEmpty() const;
|
||||||
void resize(int size);
|
void resize(int size);
|
||||||
|
void resize(int size, QChar fillChar);
|
||||||
|
|
||||||
QString &fill(QChar c, int size = -1);
|
QString &fill(QChar c, int size = -1);
|
||||||
void truncate(int pos);
|
void truncate(int pos);
|
||||||
|
@ -556,6 +556,7 @@ private slots:
|
|||||||
void nanAndInf();
|
void nanAndInf();
|
||||||
void compare_data();
|
void compare_data();
|
||||||
void compare();
|
void compare();
|
||||||
|
void resize();
|
||||||
void resizeAfterFromRawData();
|
void resizeAfterFromRawData();
|
||||||
void resizeAfterReserve();
|
void resizeAfterReserve();
|
||||||
void resizeWithNegative() const;
|
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()
|
void tst_QString::resizeAfterFromRawData()
|
||||||
{
|
{
|
||||||
QString buffer("hello world");
|
QString buffer("hello world");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user