Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qstring.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// Copyright (C) 2019 Intel Corporation.
3// Copyright (C) 2019 Mail.ru Group.
4// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
5// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
6
7#ifndef QSTRING_H
8#define QSTRING_H
9
10#if defined(QT_NO_CAST_FROM_ASCII) && defined(QT_RESTRICTED_CAST_FROM_ASCII)
11#error QT_NO_CAST_FROM_ASCII and QT_RESTRICTED_CAST_FROM_ASCII must not be defined at the same time
12#endif
13
14#include <QtCore/qchar.h>
15#include <QtCore/qbytearray.h>
16#include <QtCore/qbytearrayview.h>
17#include <QtCore/qarraydata.h>
18#include <QtCore/qlatin1stringview.h>
19#include <QtCore/qnamespace.h>
20#include <QtCore/qstringliteral.h>
21#include <QtCore/qstringalgorithms.h>
22#include <QtCore/qanystringview.h>
23#include <QtCore/qstringtokenizer.h>
24
25#include <string>
26#include <iterator>
27#include <QtCore/q20memory.h>
28
29#include <stdarg.h>
30
31#ifdef truncate
32#error qstring.h must be included before any header file that defines truncate
33#endif
34
35#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
38#endif
39
40class tst_QString;
41
43
46class QString;
47
48namespace QtPrivate {
49template <bool...B> class BoolList;
50
51template <typename Char>
53 std::is_same<Char, char32_t>;
54template <typename Char>
57}
58
59// Qt 4.x compatibility
60
61//
62// QLatin1StringView inline implementations
63//
64constexpr bool QtPrivate::isLatin1(QLatin1StringView) noexcept
65{ return true; }
66
67//
68// QStringView members that require QLatin1StringView:
69//
71{ return QtPrivate::compareStrings(*this, s, cs); }
73{ return QtPrivate::startsWith(*this, s, cs); }
75{ return QtPrivate::endsWith(*this, s, cs); }
77{ return QtPrivate::findString(*this, from, s, cs); }
79{ return indexOf(s, 0, cs) != qsizetype(-1); }
81{ return QtPrivate::lastIndexOf(*this, size(), s, cs); }
83{ return QtPrivate::lastIndexOf(*this, from, s, cs); }
85{ return QtPrivate::count(*this, s, cs); }
86
87//
88// QAnyStringView members that require QLatin1StringView
89//
90
92 : m_data{str.data()}, m_size{size_t(str.size()) | Tag::Latin1} {}
93
94constexpr QLatin1StringView QAnyStringView::asLatin1StringView() const
95{
96 Q_ASSERT(isLatin1());
97 return {m_data_utf8, size()};
98}
99
100
101template <typename Visitor>
102constexpr decltype(auto) QAnyStringView::visit(Visitor &&v) const
103{
104 if (isUtf16())
105 return std::forward<Visitor>(v)(asStringView());
106 else if (isLatin1())
107 return std::forward<Visitor>(v)(asLatin1StringView());
108 else
109 return std::forward<Visitor>(v)(asUtf8StringView());
110}
111
112//
113// QAnyStringView members that require QAnyStringView::visit()
114//
115
117{
118 return visit([] (auto that) { return QAnyStringView::toQChar(that.front()); });
119}
121{
122 return visit([] (auto that) { return QAnyStringView::toQChar(that.back()); });
123}
124
125
126class Q_CORE_EXPORT QString
127{
129
130 friend class ::tst_QString;
131
132 template <typename Iterator>
133 static constexpr bool is_contiguous_iterator_v =
134 // Can't use contiguous_iterator_tag here, as STL impls can't agree on feature macro.
135 // To avoid differences in C++20 and C++17 builds, treat only pointers as contiguous
136 // for now:
137 // std::contiguous_iterator<Iterator>;
138 std::is_pointer_v<Iterator>;
139
140 template <typename Char>
141 using is_compatible_char_helper = std::disjunction<
144 std::is_same<Char, QLatin1Char> // special case
145 >;
146
147 template <typename Iterator>
148 static constexpr bool is_compatible_iterator_v = std::conjunction_v<
149 std::is_convertible<
150 typename std::iterator_traits<Iterator>::iterator_category,
151 std::input_iterator_tag
152 >,
153 is_compatible_char_helper<typename std::iterator_traits<Iterator>::value_type>
154 >;
155
156 template <typename Iterator>
157 using if_compatible_iterator = std::enable_if_t<is_compatible_iterator_v<Iterator>, bool>;
158
159public:
161
162 inline constexpr QString() noexcept;
163 explicit QString(const QChar *unicode, qsizetype size = -1);
164 QString(QChar c);
166 inline QString(QLatin1StringView latin1);
167#if defined(__cpp_char8_t) || defined(Q_QDOC)
169 inline QString(const char8_t *str)
170 : QString(fromUtf8(str))
171 {}
172#endif
173 inline QString(const QString &) noexcept;
174 inline ~QString();
175 QString &operator=(QChar c);
176 QString &operator=(const QString &) noexcept;
177 QString &operator=(QLatin1StringView latin1);
178 inline QString(QString &&other) noexcept
179 = default;
180 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QString)
181 void swap(QString &other) noexcept { d.swap(other.d); }
182 inline qsizetype size() const { return d.size; }
183#if QT_DEPRECATED_SINCE(6, 4)
184 QT_DEPRECATED_VERSION_X_6_4("Use size() or length() instead.")
185 inline qsizetype count() const { return d.size; }
186#endif
187 inline qsizetype length() const { return d.size; }
188 inline bool isEmpty() const;
189 void resize(qsizetype size);
190 void resize(qsizetype size, QChar fillChar);
191
193 void truncate(qsizetype pos);
194 void chop(qsizetype n);
195
196 inline qsizetype capacity() const;
197 inline void reserve(qsizetype size);
198 inline void squeeze();
199
200 inline const QChar *unicode() const;
201 inline QChar *data();
202 inline const QChar *data() const;
203 inline const QChar *constData() const;
204
205 inline void detach();
206 inline bool isDetached() const;
207 inline bool isSharedWith(const QString &other) const { return d.isSharedWith(other.d); }
208 void clear();
209
210 inline const QChar at(qsizetype i) const;
211 const QChar operator[](qsizetype i) const;
212 [[nodiscard]] QChar &operator[](qsizetype i);
213
214 [[nodiscard]] inline QChar front() const { return at(0); }
215 [[nodiscard]] inline QChar &front();
216 [[nodiscard]] inline QChar back() const { return at(size() - 1); }
217 [[nodiscard]] inline QChar &back();
218
219 [[nodiscard]] QString arg(qlonglong a, int fieldwidth=0, int base=10,
220 QChar fillChar = u' ') const;
221 [[nodiscard]] QString arg(qulonglong a, int fieldwidth=0, int base=10,
222 QChar fillChar = u' ') const;
223 [[nodiscard]] QString arg(long a, int fieldwidth=0, int base=10,
224 QChar fillChar = u' ') const;
225 [[nodiscard]] QString arg(ulong a, int fieldwidth=0, int base=10,
226 QChar fillChar = u' ') const;
227 [[nodiscard]] QString arg(int a, int fieldWidth = 0, int base = 10,
228 QChar fillChar = u' ') const;
229 [[nodiscard]] QString arg(uint a, int fieldWidth = 0, int base = 10,
230 QChar fillChar = u' ') const;
231 [[nodiscard]] QString arg(short a, int fieldWidth = 0, int base = 10,
232 QChar fillChar = u' ') const;
233 [[nodiscard]] QString arg(ushort a, int fieldWidth = 0, int base = 10,
234 QChar fillChar = u' ') const;
235 [[nodiscard]] QString arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1,
236 QChar fillChar = u' ') const;
237 [[nodiscard]] QString arg(char a, int fieldWidth = 0,
238 QChar fillChar = u' ') const;
239 [[nodiscard]] QString arg(QChar a, int fieldWidth = 0,
240 QChar fillChar = u' ') const;
241 [[nodiscard]] QString arg(const QString &a, int fieldWidth = 0,
242 QChar fillChar = u' ') const;
243 [[nodiscard]] QString arg(QStringView a, int fieldWidth = 0,
244 QChar fillChar = u' ') const;
245 [[nodiscard]] QString arg(QLatin1StringView a, int fieldWidth = 0,
246 QChar fillChar = u' ') const;
247private:
248 template <typename T>
249 using is_convertible_to_view_or_qstring = std::disjunction<
250 std::is_convertible<T, QString>,
251 std::is_convertible<T, QStringView>,
252 std::is_convertible<T, QLatin1StringView>
253 >;
254public:
255 template <typename...Args>
256 [[nodiscard]]
257#ifdef Q_QDOC
258 QString
259#else
260 typename std::enable_if<
261 sizeof...(Args) >= 2 && std::is_same<
262 QtPrivate::BoolList<is_convertible_to_view_or_qstring<Args>::value..., true>,
263 QtPrivate::BoolList<true, is_convertible_to_view_or_qstring<Args>::value...>
264 >::value,
265 QString
266 >::type
267#endif
268 arg(Args &&...args) const
269 { return qToStringViewIgnoringNull(*this).arg(std::forward<Args>(args)...); }
270
271 static QString vasprintf(const char *format, va_list ap) Q_ATTRIBUTE_FORMAT_PRINTF(1, 0);
272 static QString asprintf(const char *format, ...) Q_ATTRIBUTE_FORMAT_PRINTF(1, 2);
273
274 [[nodiscard]] qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
275 [[nodiscard]] qsizetype indexOf(QLatin1StringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
276 [[nodiscard]] qsizetype indexOf(const QString &s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
277 [[nodiscard]] qsizetype indexOf(QStringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
278 { return QtPrivate::findString(*this, from, s, cs); }
280 { return lastIndexOf(c, -1, cs); }
283 { return lastIndexOf(s, size(), cs); }
286 { return lastIndexOf(s, size(), cs); }
287 [[nodiscard]] qsizetype lastIndexOf(const QString &s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
288
290 { return lastIndexOf(s, size(), cs); }
292 { return QtPrivate::lastIndexOf(*this, from, s, cs); }
293
294 [[nodiscard]] inline bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
295 [[nodiscard]] inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
296 [[nodiscard]] inline bool contains(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
297 [[nodiscard]] inline bool contains(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
298 [[nodiscard]] qsizetype count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
299 [[nodiscard]] qsizetype count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
301
302#if QT_CONFIG(regularexpression)
303 [[nodiscard]] qsizetype indexOf(const QRegularExpression &re, qsizetype from = 0,
304 QRegularExpressionMatch *rmatch = nullptr) const;
305#ifdef Q_QDOC
306 [[nodiscard]] qsizetype lastIndexOf(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const;
307#else
308 // prevent an ambiguity when called like this: lastIndexOf(re, 0)
309 template <typename T = QRegularExpressionMatch, std::enable_if_t<std::is_same_v<T, QRegularExpressionMatch>, bool> = false>
310 [[nodiscard]] qsizetype lastIndexOf(const QRegularExpression &re, T *rmatch = nullptr) const
311 { return lastIndexOf(re, size(), rmatch); }
312#endif
313 [[nodiscard]] qsizetype lastIndexOf(const QRegularExpression &re, qsizetype from,
314 QRegularExpressionMatch *rmatch = nullptr) const;
315 [[nodiscard]] bool contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const;
316 [[nodiscard]] qsizetype count(const QRegularExpression &re) const;
317#endif
318
320 SectionDefault = 0x00,
321 SectionSkipEmpty = 0x01,
322 SectionIncludeLeadingSep = 0x02,
323 SectionIncludeTrailingSep = 0x04,
324 SectionCaseInsensitiveSeps = 0x08
325 };
326 Q_DECLARE_FLAGS(SectionFlags, SectionFlag)
327
328 [[nodiscard]] QString section(QChar sep, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
329 [[nodiscard]] QString section(const QString &in_sep, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
330#if QT_CONFIG(regularexpression)
331 [[nodiscard]] QString section(const QRegularExpression &re, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
332#endif
333 [[nodiscard]] QString left(qsizetype n) const;
334 [[nodiscard]] QString right(qsizetype n) const;
335 [[nodiscard]] QString mid(qsizetype position, qsizetype n = -1) const;
336
337 [[nodiscard]] QString first(qsizetype n) const
338 { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QString(data(), n); }
339 [[nodiscard]] QString last(qsizetype n) const
340 { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QString(data() + size() - n, n); }
341 [[nodiscard]] QString sliced(qsizetype pos) const
342 { Q_ASSERT(pos >= 0); Q_ASSERT(pos <= size()); return QString(data() + pos, size() - pos); }
343 [[nodiscard]] QString sliced(qsizetype pos, qsizetype n) const
344 { Q_ASSERT(pos >= 0); Q_ASSERT(n >= 0); Q_ASSERT(size_t(pos) + size_t(n) <= size_t(size())); return QString(data() + pos, n); }
345 [[nodiscard]] QString chopped(qsizetype n) const
346 { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return first(size() - n); }
347
348
349 bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
350 [[nodiscard]] bool startsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
351 { return QtPrivate::startsWith(*this, s, cs); }
352 bool startsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
353 bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
354
355 bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
356 [[nodiscard]] bool endsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
357 { return QtPrivate::endsWith(*this, s, cs); }
358 bool endsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
359 bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
360
361 bool isUpper() const;
362 bool isLower() const;
363
364 [[nodiscard]] QString leftJustified(qsizetype width, QChar fill = u' ', bool trunc = false) const;
365 [[nodiscard]] QString rightJustified(qsizetype width, QChar fill = u' ', bool trunc = false) const;
366
367#if !defined(Q_QDOC)
368 [[nodiscard]] QString toLower() const &
369 { return toLower_helper(*this); }
370 [[nodiscard]] QString toLower() &&
371 { return toLower_helper(*this); }
372 [[nodiscard]] QString toUpper() const &
373 { return toUpper_helper(*this); }
374 [[nodiscard]] QString toUpper() &&
375 { return toUpper_helper(*this); }
376 [[nodiscard]] QString toCaseFolded() const &
377 { return toCaseFolded_helper(*this); }
378 [[nodiscard]] QString toCaseFolded() &&
379 { return toCaseFolded_helper(*this); }
380 [[nodiscard]] QString trimmed() const &
381 { return trimmed_helper(*this); }
382 [[nodiscard]] QString trimmed() &&
383 { return trimmed_helper(*this); }
384 [[nodiscard]] QString simplified() const &
385 { return simplified_helper(*this); }
386 [[nodiscard]] QString simplified() &&
387 { return simplified_helper(*this); }
388#else
389 [[nodiscard]] QString toLower() const;
390 [[nodiscard]] QString toUpper() const;
391 [[nodiscard]] QString toCaseFolded() const;
392 [[nodiscard]] QString trimmed() const;
393 [[nodiscard]] QString simplified() const;
394#endif
395 [[nodiscard]] QString toHtmlEscaped() const;
396
399 inline QString &insert(qsizetype i, const QString &s) { return insert(i, s.constData(), s.size()); }
400 inline QString &insert(qsizetype i, QStringView v) { return insert(i, v.data(), v.size()); }
403
405 QString &append(const QChar *uc, qsizetype len);
406 QString &append(const QString &s);
407 inline QString &append(QStringView v) { return append(v.data(), v.size()); }
410
411 inline QString &prepend(QChar c) { return insert(0, c); }
412 inline QString &prepend(const QChar *uc, qsizetype len) { return insert(0, uc, len); }
413 inline QString &prepend(const QString &s) { return insert(0, s); }
414 inline QString &prepend(QStringView v) { return prepend(v.data(), v.size()); }
415 inline QString &prepend(QLatin1StringView s) { return insert(0, s); }
417
418 QString &assign(QAnyStringView s);
420 {
421 Q_ASSERT(n >= 0);
422 return fill(c, n);
423 }
424 template <typename InputIterator, if_compatible_iterator<InputIterator> = true>
425 QString &assign(InputIterator first, InputIterator last)
426 {
427 using V = typename std::iterator_traits<InputIterator>::value_type;
428 constexpr bool IsL1C = std::is_same_v<std::remove_cv_t<V>, QLatin1Char>;
429 constexpr bool IsFwdIt = std::is_convertible_v<
430 typename std::iterator_traits<InputIterator>::iterator_category,
431 std::forward_iterator_tag
432 >;
433
434 if constexpr (is_contiguous_iterator_v<InputIterator>) {
435 const auto p = q20::to_address(first);
436 const auto len = qsizetype(last - first);
437 if constexpr (IsL1C)
438 return assign(QLatin1StringView(reinterpret_cast<const char*>(p), len));
439 else if constexpr (sizeof(V) == 4)
440 return assign_helper(p, len);
441 else
442 return assign(QAnyStringView(p, len));
443 } else if constexpr (sizeof(V) == 4) { // non-contiguous iterator, feed data piecemeal
444 resize(0);
445 if constexpr (IsFwdIt) {
446 const qsizetype requiredCapacity = 2 * std::distance(first, last);
447 reserve(requiredCapacity);
448 }
449 while (first != last) {
451 ++first;
452 }
453 return *this;
454 } else {
455 d.assign(first, last, [](QChar ch) -> char16_t { return ch.unicode(); });
456 d.data()[d.size] = u'\0';
457 return *this;
458 }
459 }
460
461 inline QString &operator+=(QChar c) { return append(c); }
462
463 inline QString &operator+=(const QString &s) { return append(s); }
464 inline QString &operator+=(QStringView v) { return append(v); }
467
468#if defined(QT_RESTRICTED_CAST_FROM_ASCII)
469 template <qsizetype N>
470 QString &insert(qsizetype i, const char (&ch)[N]) { return insert(i, QUtf8StringView(ch)); }
471 template <qsizetype N>
472 QString &append(const char (&ch)[N]) { return append(QUtf8StringView(ch)); }
473 template <qsizetype N>
474 QString &prepend(const char (&ch)[N]) { return prepend(QUtf8StringView(ch)); }
475 template <qsizetype N>
476 QString &operator+=(const char (&ch)[N]) { return append(QUtf8StringView(ch)); }
477#endif
478
483
485 { return size_t(pos) < size_t(size()) ? remove(pos, 1) : *this; }
486 QString &removeFirst() { return !isEmpty() ? remove(0, 1) : *this; }
487 QString &removeLast() { return !isEmpty() ? remove(size() - 1, 1) : *this; }
488
489 template <typename Predicate>
490 QString &removeIf(Predicate pred)
491 {
492 removeIf_helper(pred);
493 return *this;
494 }
495
496 QString &replace(qsizetype i, qsizetype len, QChar after);
497 QString &replace(qsizetype i, qsizetype len, const QChar *s, qsizetype slen);
498 QString &replace(qsizetype i, qsizetype len, const QString &after);
499 QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
500 QString &replace(const QChar *before, qsizetype blen, const QChar *after, qsizetype alen, Qt::CaseSensitivity cs = Qt::CaseSensitive);
502 QString &replace(QLatin1StringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
503 QString &replace(const QString &before, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
504 QString &replace(const QString &before, const QString &after,
506 QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
508#if QT_CONFIG(regularexpression)
509 QString &replace(const QRegularExpression &re, const QString &after);
510 inline QString &remove(const QRegularExpression &re)
511 { return replace(re, QString()); }
512#endif
513
514public:
515 [[nodiscard]]
516 QStringList split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts,
518 [[nodiscard]]
519 QStringList split(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts,
521#ifndef QT_NO_REGULAREXPRESSION
522 [[nodiscard]]
524 Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const;
525#endif
526
527 template <typename Needle, typename...Flags>
528 [[nodiscard]] inline auto tokenize(Needle &&needle, Flags...flags) const &
529 noexcept(noexcept(qTokenize(std::declval<const QString &>(), std::forward<Needle>(needle), flags...)))
530 -> decltype(qTokenize(*this, std::forward<Needle>(needle), flags...))
531 { return qTokenize(qToStringViewIgnoringNull(*this), std::forward<Needle>(needle), flags...); }
532
533 template <typename Needle, typename...Flags>
534 [[nodiscard]] inline auto tokenize(Needle &&needle, Flags...flags) const &&
535 noexcept(noexcept(qTokenize(std::declval<const QString>(), std::forward<Needle>(needle), flags...)))
536 -> decltype(qTokenize(std::move(*this), std::forward<Needle>(needle), flags...))
537 { return qTokenize(std::move(*this), std::forward<Needle>(needle), flags...); }
538
539 template <typename Needle, typename...Flags>
540 [[nodiscard]] inline auto tokenize(Needle &&needle, Flags...flags) &&
541 noexcept(noexcept(qTokenize(std::declval<QString>(), std::forward<Needle>(needle), flags...)))
542 -> decltype(qTokenize(std::move(*this), std::forward<Needle>(needle), flags...))
543 { return qTokenize(std::move(*this), std::forward<Needle>(needle), flags...); }
544
545
550 NormalizationForm_KC
551 };
552 [[nodiscard]] QString normalized(NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const;
553
554 [[nodiscard]] QString repeated(qsizetype times) const;
555
556 const ushort *utf16() const; // ### Qt 7 char16_t
557
558#if !defined(Q_QDOC)
559 [[nodiscard]] QByteArray toLatin1() const &
560 { return toLatin1_helper(*this); }
561 [[nodiscard]] QByteArray toLatin1() &&
562 { return toLatin1_helper_inplace(*this); }
563 [[nodiscard]] QByteArray toUtf8() const &
564 { return toUtf8_helper(*this); }
565 [[nodiscard]] QByteArray toUtf8() &&
566 { return toUtf8_helper(*this); }
567 [[nodiscard]] QByteArray toLocal8Bit() const &
568 { return toLocal8Bit_helper(isNull() ? nullptr : constData(), size()); }
569 [[nodiscard]] QByteArray toLocal8Bit() &&
570 { return toLocal8Bit_helper(isNull() ? nullptr : constData(), size()); }
571#else
572 [[nodiscard]] QByteArray toLatin1() const;
573 [[nodiscard]] QByteArray toUtf8() const;
574 [[nodiscard]] QByteArray toLocal8Bit() const;
575#endif
576 [[nodiscard]] QList<uint> toUcs4() const; // ### Qt 7 char32_t
577
578 // note - this are all inline so we can benefit from strlen() compile time optimizations
579 static QString fromLatin1(QByteArrayView ba);
581 static inline QString fromLatin1(const QByteArray &ba) { return fromLatin1(QByteArrayView(ba)); }
582 static inline QString fromLatin1(const char *str, qsizetype size)
583 {
584 return fromLatin1(QByteArrayView(str, !str || size < 0 ? qstrlen(str) : size));
585 }
586 static QString fromUtf8(QByteArrayView utf8);
588 static inline QString fromUtf8(const QByteArray &ba) { return fromUtf8(QByteArrayView(ba)); }
589 static inline QString fromUtf8(const char *utf8, qsizetype size)
590 {
591 return fromUtf8(QByteArrayView(utf8, !utf8 || size < 0 ? qstrlen(utf8) : size));
592 }
593#if defined(__cpp_char8_t) || defined(Q_QDOC)
595 static inline QString fromUtf8(const char8_t *str)
596 { return fromUtf8(reinterpret_cast<const char *>(str)); }
598 static inline QString fromUtf8(const char8_t *str, qsizetype size)
599 { return fromUtf8(reinterpret_cast<const char *>(str), size); }
600#endif
604 static inline QString fromLocal8Bit(const char *str, qsizetype size)
605 {
606 return fromLocal8Bit(QByteArrayView(str, !str || size < 0 ? qstrlen(str) : size));
607 }
608 static QString fromUtf16(const char16_t *, qsizetype size = -1);
609 static QString fromUcs4(const char32_t *, qsizetype size = -1);
610 static QString fromRawData(const QChar *, qsizetype size);
611
612#if QT_DEPRECATED_SINCE(6, 0)
613 QT_DEPRECATED_VERSION_X_6_0("Use char16_t* overload.")
614 static QString fromUtf16(const ushort *str, qsizetype size = -1)
615 { return fromUtf16(reinterpret_cast<const char16_t *>(str), size); }
616 QT_DEPRECATED_VERSION_X_6_0("Use char32_t* overload.")
617 static QString fromUcs4(const uint *str, qsizetype size = -1)
618 { return fromUcs4(reinterpret_cast<const char32_t *>(str), size); }
619#endif
620
621 inline qsizetype toWCharArray(wchar_t *array) const;
622 [[nodiscard]] static inline QString fromWCharArray(const wchar_t *string, qsizetype size = -1);
623
624 QString &setRawData(const QChar *unicode, qsizetype size);
625 QString &setUnicode(const QChar *unicode, qsizetype size);
626 inline QString &setUtf16(const ushort *utf16, qsizetype size); // ### Qt 7 char16_t
627
628 int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
630 inline int compare(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
632 { return compare(QStringView{&ch, 1}, cs); }
633
634 static inline int compare(const QString &s1, const QString &s2,
636 { return s1.compare(s2, cs); }
637
638 static inline int compare(const QString &s1, QLatin1StringView s2,
640 { return s1.compare(s2, cs); }
641 static inline int compare(QLatin1StringView s1, const QString &s2,
643 { return -s2.compare(s1, cs); }
645 { return s1.compare(s2, cs); }
647 { return -s2.compare(s1, cs); }
648
649 int localeAwareCompare(const QString& s) const;
650 int localeAwareCompare(QStringView s) const;
651 static int localeAwareCompare(const QString& s1, const QString& s2)
652 { return s1.localeAwareCompare(s2); }
653
654 static int localeAwareCompare(QStringView s1, QStringView s2);
655
656 short toShort(bool *ok=nullptr, int base=10) const
657 { return toIntegral_helper<short>(*this, ok, base); }
658 ushort toUShort(bool *ok=nullptr, int base=10) const
659 { return toIntegral_helper<ushort>(*this, ok, base); }
660 int toInt(bool *ok=nullptr, int base=10) const
661 { return toIntegral_helper<int>(*this, ok, base); }
662 uint toUInt(bool *ok=nullptr, int base=10) const
663 { return toIntegral_helper<uint>(*this, ok, base); }
664 long toLong(bool *ok=nullptr, int base=10) const
665 { return toIntegral_helper<long>(*this, ok, base); }
666 ulong toULong(bool *ok=nullptr, int base=10) const
667 { return toIntegral_helper<ulong>(*this, ok, base); }
668 QT_CORE_INLINE_SINCE(6, 5)
669 qlonglong toLongLong(bool *ok=nullptr, int base=10) const;
670 QT_CORE_INLINE_SINCE(6, 5)
671 qulonglong toULongLong(bool *ok=nullptr, int base=10) const;
672 float toFloat(bool *ok=nullptr) const;
673 double toDouble(bool *ok=nullptr) const;
674
675 QString &setNum(short, int base=10);
676 QString &setNum(ushort, int base=10);
677 QString &setNum(int, int base=10);
678 QString &setNum(uint, int base=10);
679 QString &setNum(long, int base=10);
680 QString &setNum(ulong, int base=10);
681 QString &setNum(qlonglong, int base=10);
682 QString &setNum(qulonglong, int base=10);
683 QString &setNum(float, char format='g', int precision=6);
684 QString &setNum(double, char format='g', int precision=6);
685
686 static QString number(int, int base=10);
687 static QString number(uint, int base=10);
688 static QString number(long, int base=10);
689 static QString number(ulong, int base=10);
690 static QString number(qlonglong, int base=10);
691 static QString number(qulonglong, int base=10);
692 static QString number(double, char format='g', int precision=6);
693
694 friend bool operator==(const QString &s1, const QString &s2) noexcept
695 { return (s1.size() == s2.size()) && QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) == 0; }
696 friend bool operator< (const QString &s1, const QString &s2) noexcept
698 friend bool operator> (const QString &s1, const QString &s2) noexcept { return s2 < s1; }
699 friend bool operator!=(const QString &s1, const QString &s2) noexcept { return !(s1 == s2); }
700 friend bool operator<=(const QString &s1, const QString &s2) noexcept { return !(s1 > s2); }
701 friend bool operator>=(const QString &s1, const QString &s2) noexcept { return !(s1 < s2); }
702
703 friend bool operator==(const QString &s1, QLatin1StringView s2) noexcept
704 { return (s1.size() == s2.size()) && QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) == 0; }
705 friend bool operator< (const QString &s1, QLatin1StringView s2) noexcept
707 friend bool operator> (const QString &s1, QLatin1StringView s2) noexcept
709 friend bool operator!=(const QString &s1, QLatin1StringView s2) noexcept { return !(s1 == s2); }
710 friend bool operator<=(const QString &s1, QLatin1StringView s2) noexcept { return !(s1 > s2); }
711 friend bool operator>=(const QString &s1, QLatin1StringView s2) noexcept { return !(s1 < s2); }
712
713 friend bool operator==(QLatin1StringView s1, const QString &s2) noexcept { return s2 == s1; }
714 friend bool operator< (QLatin1StringView s1, const QString &s2) noexcept { return s2 > s1; }
715 friend bool operator> (QLatin1StringView s1, const QString &s2) noexcept { return s2 < s1; }
716 friend bool operator!=(QLatin1StringView s1, const QString &s2) noexcept { return s2 != s1; }
717 friend bool operator<=(QLatin1StringView s1, const QString &s2) noexcept { return s2 >= s1; }
718 friend bool operator>=(QLatin1StringView s1, const QString &s2) noexcept { return s2 <= s1; }
719
720 // Check isEmpty() instead of isNull() for backwards compatibility.
721 friend bool operator==(const QString &s1, std::nullptr_t) noexcept { return s1.isEmpty(); }
722 friend bool operator!=(const QString &s1, std::nullptr_t) noexcept { return !s1.isEmpty(); }
723 friend bool operator< (const QString & , std::nullptr_t) noexcept { return false; }
724 friend bool operator> (const QString &s1, std::nullptr_t) noexcept { return !s1.isEmpty(); }
725 friend bool operator<=(const QString &s1, std::nullptr_t) noexcept { return s1.isEmpty(); }
726 friend bool operator>=(const QString & , std::nullptr_t) noexcept { return true; }
727 friend bool operator==(std::nullptr_t, const QString &s2) noexcept { return s2 == nullptr; }
728 friend bool operator!=(std::nullptr_t, const QString &s2) noexcept { return s2 != nullptr; }
729 friend bool operator< (std::nullptr_t, const QString &s2) noexcept { return s2 > nullptr; }
730 friend bool operator> (std::nullptr_t, const QString &s2) noexcept { return s2 < nullptr; }
731 friend bool operator<=(std::nullptr_t, const QString &s2) noexcept { return s2 >= nullptr; }
732 friend bool operator>=(std::nullptr_t, const QString &s2) noexcept { return s2 <= nullptr; }
733
734 friend bool operator==(const QString &s1, const char16_t *s2) noexcept { return s1 == QStringView(s2); }
735 friend bool operator!=(const QString &s1, const char16_t *s2) noexcept { return s1 != QStringView(s2); }
736 friend bool operator< (const QString &s1, const char16_t *s2) noexcept { return s1 < QStringView(s2); }
737 friend bool operator> (const QString &s1, const char16_t *s2) noexcept { return s1 > QStringView(s2); }
738 friend bool operator<=(const QString &s1, const char16_t *s2) noexcept { return s1 <= QStringView(s2); }
739 friend bool operator>=(const QString &s1, const char16_t *s2) noexcept { return s1 >= QStringView(s2); }
740
741 friend bool operator==(const char16_t *s1, const QString &s2) noexcept { return s2 == s1; }
742 friend bool operator!=(const char16_t *s1, const QString &s2) noexcept { return s2 != s1; }
743 friend bool operator< (const char16_t *s1, const QString &s2) noexcept { return s2 > s1; }
744 friend bool operator> (const char16_t *s1, const QString &s2) noexcept { return s2 < s1; }
745 friend bool operator<=(const char16_t *s1, const QString &s2) noexcept { return s2 >= s1; }
746 friend bool operator>=(const char16_t *s1, const QString &s2) noexcept { return s2 <= s1; }
747
748 // QChar <> QString
749 friend inline bool operator==(QChar lhs, const QString &rhs) noexcept
750 { return rhs.size() == 1 && lhs == rhs.front(); }
751 friend inline bool operator< (QChar lhs, const QString &rhs) noexcept
752 { return compare_helper(&lhs, 1, rhs.data(), rhs.size()) < 0; }
753 friend inline bool operator> (QChar lhs, const QString &rhs) noexcept
754 { return compare_helper(&lhs, 1, rhs.data(), rhs.size()) > 0; }
755
756 friend inline bool operator!=(QChar lhs, const QString &rhs) noexcept { return !(lhs == rhs); }
757 friend inline bool operator<=(QChar lhs, const QString &rhs) noexcept { return !(lhs > rhs); }
758 friend inline bool operator>=(QChar lhs, const QString &rhs) noexcept { return !(lhs < rhs); }
759
760 friend inline bool operator==(const QString &lhs, QChar rhs) noexcept { return rhs == lhs; }
761 friend inline bool operator!=(const QString &lhs, QChar rhs) noexcept { return !(rhs == lhs); }
762 friend inline bool operator< (const QString &lhs, QChar rhs) noexcept { return rhs > lhs; }
763 friend inline bool operator> (const QString &lhs, QChar rhs) noexcept { return rhs < lhs; }
764 friend inline bool operator<=(const QString &lhs, QChar rhs) noexcept { return !(rhs < lhs); }
765 friend inline bool operator>=(const QString &lhs, QChar rhs) noexcept { return !(rhs > lhs); }
766
767 // ASCII compatibility
768#if defined(QT_RESTRICTED_CAST_FROM_ASCII)
769 template <qsizetype N>
770 inline QString(const char (&ch)[N])
771 : QString(fromUtf8(ch))
772 {}
773 template <qsizetype N>
774 QString(char (&)[N]) = delete;
775 template <qsizetype N>
776 inline QString &operator=(const char (&ch)[N])
777 { return (*this = fromUtf8(ch, N - 1)); }
778 template <qsizetype N>
779 QString &operator=(char (&)[N]) = delete;
780#endif
781#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
782 QT_ASCII_CAST_WARN inline QString(const char *ch)
783 : QString(fromUtf8(ch))
784 {}
786 : QString(fromUtf8(a))
787 {}
789 { return (*this = fromUtf8(ch)); }
791 { return (*this = fromUtf8(a)); }
792
793 // these are needed, so it compiles with STL support enabled
794 QT_ASCII_CAST_WARN inline QString &prepend(const char *s)
795 { return prepend(QUtf8StringView(s)); }
797 { return prepend(QUtf8StringView(s)); }
798 QT_ASCII_CAST_WARN inline QString &append(const char *s)
799 { return append(QUtf8StringView(s)); }
801 { return append(QUtf8StringView(s)); }
803 { return insert(i, QUtf8StringView(s)); }
805 { return insert(i, QUtf8StringView(s)); }
807 { return append(QUtf8StringView(s)); }
809 { return append(QUtf8StringView(s)); }
810
811 QT_ASCII_CAST_WARN inline bool operator==(const char *s) const;
812 QT_ASCII_CAST_WARN inline bool operator!=(const char *s) const;
813 QT_ASCII_CAST_WARN inline bool operator<(const char *s) const;
814 QT_ASCII_CAST_WARN inline bool operator<=(const char *s) const;
815 QT_ASCII_CAST_WARN inline bool operator>(const char *s) const;
816 QT_ASCII_CAST_WARN inline bool operator>=(const char *s) const;
817
818 QT_ASCII_CAST_WARN inline bool operator==(const QByteArray &s) const;
819 QT_ASCII_CAST_WARN inline bool operator!=(const QByteArray &s) const;
820 QT_ASCII_CAST_WARN inline bool operator<(const QByteArray &s) const;
821 QT_ASCII_CAST_WARN inline bool operator>(const QByteArray &s) const;
822 QT_ASCII_CAST_WARN inline bool operator<=(const QByteArray &s) const;
823 QT_ASCII_CAST_WARN inline bool operator>=(const QByteArray &s) const;
824
825 QT_ASCII_CAST_WARN friend bool operator==(const char *s1, const QString &s2)
826 { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) == 0; }
827 QT_ASCII_CAST_WARN friend bool operator!=(const char *s1, const QString &s2)
828 { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; }
829 QT_ASCII_CAST_WARN friend bool operator< (const char *s1, const QString &s2)
830 { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; }
831 QT_ASCII_CAST_WARN friend bool operator> (const char *s1, const QString &s2)
832 { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; }
833 QT_ASCII_CAST_WARN friend bool operator<=(const char *s1, const QString &s2)
834 { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; }
835 QT_ASCII_CAST_WARN friend bool operator>=(const char *s1, const QString &s2)
836 { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; }
837#endif
838
839 typedef QChar *iterator;
840 typedef const QChar *const_iterator;
843 typedef std::reverse_iterator<iterator> reverse_iterator;
844 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
845 inline iterator begin();
846 inline const_iterator begin() const;
847 inline const_iterator cbegin() const;
848 inline const_iterator constBegin() const;
849 inline iterator end();
850 inline const_iterator end() const;
851 inline const_iterator cend() const;
852 inline const_iterator constEnd() const;
859
860 // STL compatibility
863 typedef const QChar & const_reference;
864 typedef QChar & reference;
865 typedef QChar *pointer;
866 typedef const QChar *const_pointer;
868 inline void push_back(QChar c) { append(c); }
869 inline void push_back(const QString &s) { append(s); }
870 inline void push_front(QChar c) { prepend(c); }
871 inline void push_front(const QString &s) { prepend(s); }
872 void shrink_to_fit() { squeeze(); }
873 iterator erase(const_iterator first, const_iterator last);
874 inline iterator erase(const_iterator it) { return erase(it, it + 1); }
875
876 static inline QString fromStdString(const std::string &s);
877 inline std::string toStdString() const;
878 static inline QString fromStdWString(const std::wstring &s);
879 inline std::wstring toStdWString() const;
880
881 static inline QString fromStdU16String(const std::u16string &s);
882 inline std::u16string toStdU16String() const;
883 static inline QString fromStdU32String(const std::u32string &s);
884 inline std::u32string toStdU32String() const;
885
886#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
887 static QString fromCFString(CFStringRef string);
888 CFStringRef toCFString() const Q_DECL_CF_RETURNS_RETAINED;
889 static QString fromNSString(const NSString *string);
890 NSString *toNSString() const Q_DECL_NS_RETURNS_AUTORELEASED;
891#endif
892
893#if defined(Q_OS_WASM) || defined(Q_QDOC)
894 static QString fromJsString(emscripten::val jsString);
895 emscripten::val toJsString() const;
896#endif
897
898 inline bool isNull() const { return d->isNull(); }
899
900
901 bool isSimpleText() const;
902 bool isRightToLeft() const;
903 [[nodiscard]] bool isValidUtf16() const noexcept
904 { return QStringView(*this).isValidUtf16(); }
905
907 explicit QString(DataPointer &&dd) : d(std::move(dd)) {}
908
909private:
910#if defined(QT_NO_CAST_FROM_ASCII)
911 QString &operator+=(const char *s);
913 QString(const char *ch);
914 QString(const QByteArray &a);
915 QString &operator=(const char *ch);
916 QString &operator=(const QByteArray &a);
917#endif
918
919 DataPointer d;
920 static const char16_t _empty;
921
922 void reallocData(qsizetype alloc, QArrayData::AllocationOption option);
923 void reallocGrowData(qsizetype n);
924 // ### remove once QAnyStringView supports UTF-32:
925 QString &assign_helper(const char32_t *data, qsizetype len);
926 static int compare_helper(const QChar *data1, qsizetype length1,
927 const QChar *data2, qsizetype length2,
929 static int compare_helper(const QChar *data1, qsizetype length1,
930 const char *data2, qsizetype length2,
932 static int localeAwareCompare_helper(const QChar *data1, qsizetype length1,
933 const QChar *data2, qsizetype length2);
934 static QString toLower_helper(const QString &str);
935 static QString toLower_helper(QString &str);
936 static QString toUpper_helper(const QString &str);
937 static QString toUpper_helper(QString &str);
938 static QString toCaseFolded_helper(const QString &str);
939 static QString toCaseFolded_helper(QString &str);
940 static QString trimmed_helper(const QString &str);
941 static QString trimmed_helper(QString &str);
942 static QString simplified_helper(const QString &str);
943 static QString simplified_helper(QString &str);
944 static QByteArray toLatin1_helper(const QString &);
945 static QByteArray toLatin1_helper_inplace(QString &);
946 static QByteArray toUtf8_helper(const QString &);
947 static QByteArray toLocal8Bit_helper(const QChar *data, qsizetype size);
948#if QT_CORE_REMOVED_SINCE(6, 6)
949 static qsizetype toUcs4_helper(const ushort *uc, qsizetype length, uint *out);
950#endif
951 static qsizetype toUcs4_helper(const char16_t *uc, qsizetype length, char32_t *out);
952 static qlonglong toIntegral_helper(QStringView string, bool *ok, int base);
953 static qulonglong toIntegral_helper(QStringView string, bool *ok, uint base);
954 template <typename Predicate>
955 qsizetype removeIf_helper(Predicate pred)
956 {
957 const qsizetype result = d->eraseIf(pred);
958 if (result > 0)
959 d.data()[d.size] = u'\0';
960 return result;
961 }
962
963 friend class QStringView;
964 friend class QByteArray;
966 template <typename T> friend qsizetype erase(QString &s, const T &t);
967 template <typename Predicate> friend qsizetype erase_if(QString &s, Predicate pred);
968
969 template <typename T> static
970 T toIntegral_helper(QStringView string, bool *ok, int base)
971 {
972 using Int64 = typename std::conditional<std::is_unsigned<T>::value, qulonglong, qlonglong>::type;
973 using Int32 = typename std::conditional<std::is_unsigned<T>::value, uint, int>::type;
974
975 // we select the right overload by casting base to int or uint
976 Int64 val = toIntegral_helper(string, ok, Int32(base));
977 if (T(val) != val) {
978 if (ok)
979 *ok = false;
980 val = 0;
981 }
982 return T(val);
983 }
984
985public:
986 inline DataPointer &data_ptr() { return d; }
987 inline const DataPointer &data_ptr() const { return d; }
988};
989
990//
991// QLatin1StringView inline members that require QUtf8StringView:
992//
993
995{ return QtPrivate::compareStrings(*this, other, cs); }
996
997//
998// QLatin1StringView inline members that require QString:
999//
1000
1001QString QLatin1StringView::toString() const { return *this; }
1002
1003//
1004// QStringView inline members that require QUtf8StringView:
1005//
1006
1008{ return QtPrivate::compareStrings(*this, other, cs); }
1009
1010//
1011// QStringView inline members that require QString:
1012//
1013
1015{ return QString(data(), size()); }
1016
1018{ return QString::toIntegral_helper<qint64>(*this, ok, base); }
1020{ return QString::toIntegral_helper<quint64>(*this, ok, base); }
1021long QStringView::toLong(bool *ok, int base) const
1022{ return QString::toIntegral_helper<long>(*this, ok, base); }
1024{ return QString::toIntegral_helper<ulong>(*this, ok, base); }
1025int QStringView::toInt(bool *ok, int base) const
1026{ return QString::toIntegral_helper<int>(*this, ok, base); }
1028{ return QString::toIntegral_helper<uint>(*this, ok, base); }
1029short QStringView::toShort(bool *ok, int base) const
1030{ return QString::toIntegral_helper<short>(*this, ok, base); }
1032{ return QString::toIntegral_helper<ushort>(*this, ok, base); }
1033
1034//
1035// QUtf8StringView inline members that require QStringView:
1036//
1037
1038template <bool UseChar8T>
1040{
1041 return QtPrivate::compareStrings(*this, other, cs);
1042}
1043
1044
1045//
1046// QUtf8StringView inline members that require QString:
1047//
1048
1049template <bool UseChar8T>
1051{
1052 return QString::fromUtf8(data(), size());
1053}
1054
1055template<bool UseChar8T>
1057 Qt::CaseSensitivity cs) const noexcept
1058{
1059 return QtPrivate::compareStrings(*this, other, cs);
1060}
1061
1062//
1063// QAnyStringView inline members that require QString:
1064//
1065
1067 : QAnyStringView{str.isNull() ? nullptr : str.data(), str.size()} {}
1069 : QAnyStringView{str.isNull() ? nullptr : str.data(), str.size()} {}
1070
1072{ return QtPrivate::convertToQString(*this); }
1073
1074//
1075// QString inline members
1076//
1078{ *this = QString::fromLatin1(latin1.data(), latin1.size()); }
1079inline const QChar QString::at(qsizetype i) const
1080{ Q_ASSERT(size_t(i) < size_t(size())); return QChar(d.data()[i]); }
1082{ Q_ASSERT(size_t(i) < size_t(size())); return QChar(d.data()[i]); }
1083inline bool QString::isEmpty() const
1084{ return d.size == 0; }
1085inline const QChar *QString::unicode() const
1086{ return data(); }
1087inline const QChar *QString::data() const
1088{
1089#if QT5_NULL_STRINGS == 1
1090 return reinterpret_cast<const QChar *>(d.data() ? d.data() : &_empty);
1091#else
1092 return reinterpret_cast<const QChar *>(d.data());
1093#endif
1094}
1096{
1097 detach();
1098 Q_ASSERT(d.data());
1099 return reinterpret_cast<QChar *>(d.data());
1100}
1101inline const QChar *QString::constData() const
1102{ return data(); }
1103inline void QString::detach()
1104{ if (d->needsDetach()) reallocData(d.size, QArrayData::KeepSize); }
1105inline bool QString::isDetached() const
1106{ return !d->isShared(); }
1107inline void QString::clear()
1108{ if (!isNull()) *this = QString(); }
1109inline QString::QString(const QString &other) noexcept : d(other.d)
1110{ }
1111inline qsizetype QString::capacity() const { return qsizetype(d->constAllocatedCapacity()); }
1112inline QString &QString::setNum(short n, int base)
1113{ return setNum(qlonglong(n), base); }
1115{ return setNum(qulonglong(n), base); }
1117{ return setNum(qlonglong(n), base); }
1119{ return setNum(qulonglong(n), base); }
1120inline QString &QString::setNum(long n, int base)
1121{ return setNum(qlonglong(n), base); }
1123{ return setNum(qulonglong(n), base); }
1124inline QString &QString::setNum(float n, char f, int prec)
1125{ return setNum(double(n),f,prec); }
1126inline QString QString::arg(int a, int fieldWidth, int base, QChar fillChar) const
1127{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
1128inline QString QString::arg(uint a, int fieldWidth, int base, QChar fillChar) const
1129{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
1130inline QString QString::arg(long a, int fieldWidth, int base, QChar fillChar) const
1131{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
1132inline QString QString::arg(ulong a, int fieldWidth, int base, QChar fillChar) const
1133{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
1134inline QString QString::arg(short a, int fieldWidth, int base, QChar fillChar) const
1135{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
1136inline QString QString::arg(ushort a, int fieldWidth, int base, QChar fillChar) const
1137{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
1138
1139inline QString QString::section(QChar asep, qsizetype astart, qsizetype aend, SectionFlags aflags) const
1140{ return section(QString(asep), astart, aend, aflags); }
1141
1143QT_WARNING_DISABLE_MSVC(4127) // "conditional expression is constant"
1144QT_WARNING_DISABLE_INTEL(111) // "statement is unreachable"
1145
1146inline qsizetype QString::toWCharArray(wchar_t *array) const
1147{
1149}
1150
1152{
1153 if (sizeof(wchar_t) == sizeof(QChar)) {
1154 if (auto src = data())
1155 memcpy(array, src, sizeof(QChar) * size());
1156 return size();
1157 } else {
1158 return QString::toUcs4_helper(utf16(), size(), reinterpret_cast<char32_t *>(array));
1159 }
1160}
1161
1163
1164inline QString QString::fromWCharArray(const wchar_t *string, qsizetype size)
1165{
1166 return sizeof(wchar_t) == sizeof(QChar) ? fromUtf16(reinterpret_cast<const char16_t *>(string), size)
1167 : fromUcs4(reinterpret_cast<const char32_t *>(string), size);
1168}
1169
1170inline constexpr QString::QString() noexcept {}
1172
1173inline void QString::reserve(qsizetype asize)
1174{
1175 if (d->needsDetach() || asize >= capacity() - d.freeSpaceAtBegin())
1176 reallocData(qMax(asize, size()), QArrayData::KeepSize);
1177 if (d->constAllocatedCapacity())
1178 d->setFlag(Data::CapacityReserved);
1179}
1180
1181inline void QString::squeeze()
1182{
1183 if (!d.isMutable())
1184 return;
1185 if (d->needsDetach() || size() < capacity())
1186 reallocData(d.size, QArrayData::KeepSize);
1187 if (d->constAllocatedCapacity())
1188 d->clearFlag(Data::CapacityReserved);
1189}
1190
1191inline QString &QString::setUtf16(const ushort *autf16, qsizetype asize)
1192{ return setUnicode(reinterpret_cast<const QChar *>(autf16), asize); }
1194{ Q_ASSERT(i >= 0 && i < size()); return data()[i]; }
1195inline QChar &QString::front() { return operator[](0); }
1196inline QChar &QString::back() { return operator[](size() - 1); }
1198{ detach(); return reinterpret_cast<QChar*>(d.data()); }
1200{ return reinterpret_cast<const QChar*>(d.data()); }
1202{ return reinterpret_cast<const QChar*>(d.data()); }
1204{ return reinterpret_cast<const QChar*>(d.data()); }
1206{ detach(); return reinterpret_cast<QChar*>(d.data() + d.size); }
1208{ return reinterpret_cast<const QChar*>(d.data() + d.size); }
1210{ return reinterpret_cast<const QChar*>(d.data() + d.size); }
1212{ return reinterpret_cast<const QChar*>(d.data() + d.size); }
1213inline bool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
1214{ return indexOf(s, 0, cs) != -1; }
1216{ return indexOf(s, 0, cs) != -1; }
1218{ return indexOf(c, 0, cs) != -1; }
1220{ return indexOf(s, 0, cs) != -1; }
1221
1222#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
1223inline bool QString::operator==(const char *s) const
1224{ return QString::compare_helper(constData(), size(), s, -1) == 0; }
1225inline bool QString::operator!=(const char *s) const
1226{ return QString::compare_helper(constData(), size(), s, -1) != 0; }
1227inline bool QString::operator<(const char *s) const
1228{ return QString::compare_helper(constData(), size(), s, -1) < 0; }
1229inline bool QString::operator>(const char *s) const
1230{ return QString::compare_helper(constData(), size(), s, -1) > 0; }
1231inline bool QString::operator<=(const char *s) const
1232{ return QString::compare_helper(constData(), size(), s, -1) <= 0; }
1233inline bool QString::operator>=(const char *s) const
1234{ return QString::compare_helper(constData(), size(), s, -1) >= 0; }
1235
1236//
1237// QLatin1StringView inline members that require QString:
1238//
1240{ return QString::fromUtf8(s) == *this; }
1242{ return QString::fromUtf8(s) != *this; }
1244{ return QString::fromUtf8(s) > *this; }
1246{ return QString::fromUtf8(s) < *this; }
1248{ return QString::fromUtf8(s) >= *this; }
1250{ return QString::fromUtf8(s) <= *this; }
1251
1253{ return QString::fromUtf8(s) == *this; }
1255{ return QString::fromUtf8(s) != *this; }
1257{ return QString::fromUtf8(s) > *this; }
1259{ return QString::fromUtf8(s) < *this; }
1261{ return QString::fromUtf8(s) >= *this; }
1263{ return QString::fromUtf8(s) <= *this; }
1264
1266{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) == 0; }
1268{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) != 0; }
1270{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) < 0; }
1272{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) > 0; }
1274{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) <= 0; }
1276{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) >= 0; }
1277
1278inline bool QByteArray::operator==(const QString &s) const
1279{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) == 0; }
1280inline bool QByteArray::operator!=(const QString &s) const
1281{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) != 0; }
1282inline bool QByteArray::operator<(const QString &s) const
1283{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) > 0; }
1284inline bool QByteArray::operator>(const QString &s) const
1285{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) < 0; }
1286inline bool QByteArray::operator<=(const QString &s) const
1287{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) >= 0; }
1288inline bool QByteArray::operator>=(const QString &s) const
1289{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) <= 0; }
1290#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
1291
1292#if !defined(QT_USE_FAST_OPERATOR_PLUS) && !defined(QT_USE_QSTRINGBUILDER)
1293inline QString operator+(const QString &s1, const QString &s2)
1294{ QString t(s1); t += s2; return t; }
1295inline QString operator+(QString &&lhs, const QString &rhs)
1296{ return std::move(lhs += rhs); }
1298{ QString t(s1); t += s2; return t; }
1299inline QString operator+(QString &&lhs, QChar rhs)
1300{ return std::move(lhs += rhs); }
1302{ QString t(s1); t += s2; return t; }
1303# if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
1305{ QString t(s1); t += QUtf8StringView(s2); return t; }
1306QT_ASCII_CAST_WARN inline QString operator+(QString &&lhs, const char *rhs)
1307{ QT_IGNORE_DEPRECATIONS(return std::move(lhs += rhs);) }
1309{ QString t = QString::fromUtf8(s1); t += s2; return t; }
1311{ QString t = QString::fromUtf8(ba); t += s; return t; }
1313{ QString t(s); t += QUtf8StringView(ba); return t; }
1315{ QT_IGNORE_DEPRECATIONS(return std::move(lhs += rhs);) }
1316# endif // QT_NO_CAST_FROM_ASCII
1317#endif // QT_USE_QSTRINGBUILDER
1318
1319inline std::string QString::toStdString() const
1320{ return toUtf8().toStdString(); }
1321
1322inline QString QString::fromStdString(const std::string &s)
1323{ return fromUtf8(s.data(), qsizetype(s.size())); }
1324
1325inline std::wstring QString::toStdWString() const
1326{
1327 std::wstring str;
1328 str.resize(size());
1330 return str;
1331}
1332
1333inline QString QString::fromStdWString(const std::wstring &s)
1334{ return fromWCharArray(s.data(), qsizetype(s.size())); }
1335
1336inline QString QString::fromStdU16String(const std::u16string &s)
1337{ return fromUtf16(s.data(), qsizetype(s.size())); }
1338
1339inline std::u16string QString::toStdU16String() const
1340{ return std::u16string(reinterpret_cast<const char16_t*>(data()), size()); }
1341
1342inline QString QString::fromStdU32String(const std::u32string &s)
1343{ return fromUcs4(s.data(), qsizetype(s.size())); }
1344
1345inline std::u32string QString::toStdU32String() const
1346{
1347 std::u32string u32str(size(), char32_t(0));
1348 const qsizetype len = toUcs4_helper(reinterpret_cast<const char16_t *>(data()),
1349 size(), u32str.data());
1350 u32str.resize(len);
1351 return u32str;
1352}
1353
1354#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
1355Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QString &);
1356Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QString &);
1357#endif
1358
1359Q_DECLARE_SHARED(QString)
1360Q_DECLARE_OPERATORS_FOR_FLAGS(QString::SectionFlags)
1361
1362inline int QString::compare(QStringView s, Qt::CaseSensitivity cs) const noexcept
1363{ return -s.compare(*this, cs); }
1364
1366{ return localeAwareCompare_helper(constData(), size(), s.constData(), s.size()); }
1368{ return localeAwareCompare_helper(s1.constData(), s1.size(), s2.constData(), s2.size()); }
1370{ return QString::localeAwareCompare(*this, other); }
1371
1372#if QT_CORE_INLINE_IMPL_SINCE(6, 5)
1373qint64 QString::toLongLong(bool *ok, int base) const
1374{
1375 return toIntegral_helper<qlonglong>(*this, ok, base);
1376}
1377
1378quint64 QString::toULongLong(bool *ok, int base) const
1379{
1380 return toIntegral_helper<qulonglong>(*this, ok, base);
1381}
1382#endif
1383
1384namespace QtPrivate {
1385// used by qPrintable() and qUtf8Printable() macros
1386inline const QString &asString(const QString &s) { return s; }
1387inline QString &&asString(QString &&s) { return std::move(s); }
1388}
1389
1390#ifndef qPrintable
1391# define qPrintable(string) QtPrivate::asString(string).toLocal8Bit().constData()
1392#endif
1393
1394#ifndef qUtf8Printable
1395# define qUtf8Printable(string) QtPrivate::asString(string).toUtf8().constData()
1396#endif
1397
1398/*
1399 Wrap QString::utf16() with enough casts to allow passing it
1400 to QString::asprintf("%ls") without warnings.
1401*/
1402#ifndef qUtf16Printable
1403# define qUtf16Printable(string) \
1404 static_cast<const wchar_t*>(static_cast<const void*>(QtPrivate::asString(string).utf16()))
1405#endif
1406
1407//
1408// QStringView::arg() implementation
1409//
1410
1411namespace QtPrivate {
1412
1413struct ArgBase {
1414 enum Tag : uchar { L1, U8, U16 } tag;
1415};
1416
1419 QStringViewArg() = default;
1420 constexpr explicit QStringViewArg(QStringView v) noexcept : ArgBase{U16}, string{v} {}
1421};
1422
1425 QLatin1StringArg() = default;
1426 constexpr explicit QLatin1StringArg(QLatin1StringView v) noexcept : ArgBase{L1}, string{v} {}
1427};
1428
1429[[nodiscard]] Q_CORE_EXPORT QString argToQString(QStringView pattern, size_t n, const ArgBase **args);
1430[[nodiscard]] Q_CORE_EXPORT QString argToQString(QLatin1StringView pattern, size_t n, const ArgBase **args);
1431
1432template <typename StringView, typename...Args>
1433[[nodiscard]] Q_ALWAYS_INLINE QString argToQStringDispatch(StringView pattern, const Args &...args)
1434{
1435 const ArgBase *argBases[] = {&args..., /* avoid zero-sized array */ nullptr};
1436 return QtPrivate::argToQString(pattern, sizeof...(Args), argBases);
1437}
1438
1440constexpr inline QStringViewArg qStringLikeToArg(QStringView s) noexcept { return QStringViewArg{s}; }
1441 inline QStringViewArg qStringLikeToArg(const QChar &c) noexcept { return QStringViewArg{QStringView{&c, 1}}; }
1443
1444} // namespace QtPrivate
1445
1446template <typename...Args>
1449{
1451}
1452
1453template <typename...Args>
1456{
1458}
1459
1460template <typename T>
1462{
1463 return s.removeIf_helper([&t](const auto &e) { return t == e; });
1464}
1465
1466template <typename Predicate>
1467qsizetype erase_if(QString &s, Predicate pred)
1468{
1469 return s.removeIf_helper(pred);
1470}
1471
1472namespace Qt {
1473inline namespace Literals {
1474inline namespace StringLiterals {
1475inline QString operator"" _s(const char16_t *str, size_t size) noexcept
1476{
1477 return QString(QStringPrivate(nullptr, const_cast<char16_t *>(str), qsizetype(size)));
1478}
1479
1480} // StringLiterals
1481} // Literals
1482} // Qt
1483
1484inline namespace QtLiterals {
1485#if QT_DEPRECATED_SINCE(6, 8)
1486
1487QT_DEPRECATED_VERSION_X_6_8("Use _s from Qt::StringLiterals namespace instead.")
1488inline QString operator"" _qs(const char16_t *str, size_t size) noexcept
1489{
1490 return Qt::StringLiterals::operator""_s(str, size);
1491}
1492
1493#endif // QT_DEPRECATED_SINCE(6, 8)
1494} // QtLiterals
1495
1497
1498#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER)
1499#include <QtCore/qstringbuilder.h>
1500#endif
1501
1502#ifdef Q_L1S_VIEW_IS_PRIMARY
1503# undef Q_L1S_VIEW_IS_PRIMARY
1504#endif
1505
1506#endif // QSTRING_H
NSData * m_data
\inmodule QtCore
constexpr QAnyStringView() noexcept
Constructs a null string view.
constexpr QChar back() const
Returns the last character in the string view.
Definition qstring.h:120
const char * m_data_utf8
QString toString() const
Returns a deep copy of this string view's data as a QString.
Definition qstring.h:1071
constexpr QChar front() const
Returns the first character in the string view.
Definition qstring.h:116
constexpr decltype(auto) visit(Visitor &&v) const
Calls v with either a QUtf8StringView, QLatin1String, or QStringView, depending on the encoding of th...
int compare(QBasicUtf8StringView other, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
QString toString() const
Definition qstring.h:1050
\inmodule QtCore
Definition qbytearray.h:57
std::string toStdString() const
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
Definition qbytearray.h:122
friend bool operator<=(const QByteArray &a1, const QByteArray &a2) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qbytearray.h:324
friend bool operator>=(const QByteArray &a1, const QByteArray &a2) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qbytearray.h:336
friend bool operator<(const QByteArray &a1, const QByteArray &a2) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qbytearray.h:318
friend bool operator!=(const QByteArray &a1, const QByteArray &a2) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qbytearray.h:312
friend bool operator>(const QByteArray &a1, const QByteArray &a2) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qbytearray.h:330
friend bool operator==(const QByteArray &a1, const QByteArray &a2) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qbytearray.h:306
\inmodule QtCore
Definition qchar.h:48
static constexpr auto fromUcs4(char32_t c) noexcept
UnicodeVersion
Specifies which version of the \l{Unicode standard} introduced a certain character.
Definition qchar.h:407
@ Unicode_Unassigned
Definition qchar.h:408
\inmodule QtCore\reentrant
Definition qdatastream.h:30
friend bool operator<=(QLatin1StringView s1, QLatin1StringView s2) noexcept
constexpr const char * data() const noexcept
friend bool operator>=(QLatin1StringView s1, QLatin1StringView s2) noexcept
QString toString() const
Definition qstring.h:1001
int compare(QStringView other, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
friend bool operator>(QLatin1StringView s1, QLatin1StringView s2) noexcept
friend bool operator!=(QLatin1StringView s1, QLatin1StringView s2) noexcept
friend bool operator==(QLatin1StringView s1, QLatin1StringView s2) noexcept
QString arg(Args &&...args) const
constexpr qsizetype size() const noexcept
friend bool operator<(QLatin1StringView s1, QLatin1StringView s2) noexcept
Definition qlist.h:74
\inmodule QtCore \reentrant
\inmodule QtCore \reentrant
\inmodule QtCore
\inmodule QtCore
Definition qstringview.h:76
bool contains(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
bool startsWith(QStringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
constexpr const storage_type * utf16() const noexcept
qsizetype count(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
int localeAwareCompare(QStringView other) const
Definition qstring.h:1369
ushort toUShort(bool *ok=nullptr, int base=10) const
Returns the string view converted to an {unsigned short} using base base, which is 10 by default and ...
Definition qstring.h:1031
QString arg(Args &&...args) const
bool endsWith(QStringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
QString toString() const
Returns a deep copy of this string view's data as a QString.
Definition qstring.h:1014
int toInt(bool *ok=nullptr, int base=10) const
Returns the string view converted to an int using base base, which is 10 by default and must be betwe...
Definition qstring.h:1025
qlonglong toLongLong(bool *ok=nullptr, int base=10) const
Returns the string view converted to a {long long} using base base, which is 10 by default and must b...
Definition qstring.h:1017
ulong toULong(bool *ok=nullptr, int base=10) const
Returns the string view converted to an {unsigned long} using base base, which is 10 by default and m...
Definition qstring.h:1023
bool isValidUtf16() const noexcept
int compare(QStringView other, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
qulonglong toULongLong(bool *ok=nullptr, int base=10) const
Returns the string view converted to an {unsigned long long} using base base, which is 10 by default ...
Definition qstring.h:1019
short toShort(bool *ok=nullptr, int base=10) const
Returns the string view converted to a short using base base, which is 10 by default and must be betw...
Definition qstring.h:1029
qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
uint toUInt(bool *ok=nullptr, int base=10) const
Returns the string view converted to an {unsigned int} using base base, which is 10 by default and mu...
Definition qstring.h:1027
qsizetype indexOf(QChar c, qsizetype from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
long toLong(bool *ok=nullptr, int base=10) const
Returns the string view converted to a long using base base, which is 10 by default and must be betwe...
Definition qstring.h:1021
qsizetype toWCharArray(wchar_t *array) const
Definition qstring.h:1151
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
QString & removeFirst()
Definition qstring.h:486
bool startsWith(QStringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition qstring.h:350
friend bool operator<(const QString &s1, const QString &s2) noexcept
Definition qstring.h:696
QT_ASCII_CAST_WARN friend bool operator<=(const char *s1, const QString &s2)
Returns true if s1 is lexically less than or equal to s2; otherwise returns false.
Definition qstring.h:833
friend bool operator>(const QString &s1, const QString &s2) noexcept
Returns true if string s1 is lexically greater than string s2; otherwise returns false.
Definition qstring.h:698
friend bool operator==(const QString &s1, const char16_t *s2) noexcept
Definition qstring.h:734
friend bool operator!=(std::nullptr_t, const QString &s2) noexcept
Definition qstring.h:728
iterator begin()
Returns an \l{STL-style iterators}{STL-style iterator} pointing to the first character in the string.
Definition qstring.h:1197
QString & removeAt(qsizetype pos)
Definition qstring.h:484
std::u32string toStdU32String() const
Definition qstring.h:1345
QByteArray toLatin1() const &
Definition qstring.h:559
friend bool operator!=(const QString &s1, const QString &s2) noexcept
Returns true if string s1 is not equal to string s2; otherwise returns false.
Definition qstring.h:699
bool isDetached() const
Definition qstring.h:1105
friend bool operator<=(const QString &s1, QLatin1StringView s2) noexcept
Definition qstring.h:710
friend bool operator!=(const QString &s1, QLatin1StringView s2) noexcept
Definition qstring.h:709
QString & operator+=(QStringView v)
Definition qstring.h:464
const QChar operator[](qsizetype i) const
Definition qstring.h:1081
friend bool operator==(QChar lhs, const QString &rhs) noexcept
Definition qstring.h:749
QChar * iterator
Definition qstring.h:839
friend bool operator<=(const QString &s1, std::nullptr_t) noexcept
Definition qstring.h:725
friend bool operator==(QLatin1StringView s1, const QString &s2) noexcept
Definition qstring.h:713
QT_ASCII_CAST_WARN QString & append(const QByteArray &s)
Definition qstring.h:800
QString & assign(qsizetype n, QChar c)
Definition qstring.h:419
QString last(qsizetype n) const
Definition qstring.h:339
void push_front(QChar c)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.h:870
QChar & reference
Definition qstring.h:864
qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition qstring.h:279
friend bool operator!=(const QString &lhs, QChar rhs) noexcept
Definition qstring.h:761
const_iterator constEnd() const
Returns a const \l{STL-style iterators}{STL-style iterator} pointing just after the last character in...
Definition qstring.h:1211
qsizetype toWCharArray(wchar_t *array) const
Definition qstring.h:1146
static QString fromLatin1(const char *str, qsizetype size)
Returns a QString initialized with the first size characters of the Latin-1 string str.
Definition qstring.h:582
const_reverse_iterator rbegin() const
Definition qstring.h:855
std::wstring toStdWString() const
Returns a std::wstring object with the data contained in this QString.
Definition qstring.h:1325
int toInt(bool *ok=nullptr, int base=10) const
Returns the string converted to an int using base base, which is 10 by default and must be between 2 ...
Definition qstring.h:660
static Q_WEAK_OVERLOAD QString fromLocal8Bit(const QByteArray &ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.h:603
QT_ASCII_CAST_WARN QString(const char *ch)
Constructs a string initialized with the 8-bit string str.
Definition qstring.h:782
void reserve(qsizetype size)
Ensures the string has space for at least size characters.
Definition qstring.h:1173
iterator erase(const_iterator it)
Definition qstring.h:874
QString toLower() &&
Definition qstring.h:370
static QString fromStdU16String(const std::u16string &s)
Definition qstring.h:1336
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:5710
QString & operator+=(QChar c)
Definition qstring.h:461
const QChar & const_reference
Definition qstring.h:863
friend bool operator!=(const QString &s1, const char16_t *s2) noexcept
Definition qstring.h:735
QChar * pointer
The QString::pointer typedef provides an STL-style pointer to a QString element (QChar).
Definition qstring.h:865
QT_ASCII_CAST_WARN QString(const QByteArray &a)
Constructs a string initialized with the byte array ba.
Definition qstring.h:785
static QString fromStdString(const std::string &s)
Definition qstring.h:1322
QString trimmed() &&
Definition qstring.h:382
QT_ASCII_CAST_WARN QString & append(const char *s)
Definition qstring.h:798
QByteArray toUtf8() &&
Definition qstring.h:565
QString & operator+=(QUtf8StringView s)
Definition qstring.h:466
QString & prepend(const QString &s)
Prepends the string str to the beginning of this string and returns a reference to this string.
Definition qstring.h:413
qsizetype lastIndexOf(QStringView s, qsizetype from, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition qstring.h:291
friend bool operator==(const QString &s1, const QString &s2) noexcept
Definition qstring.h:694
iterator Iterator
Qt-style synonym for QString::iterator.
Definition qstring.h:841
friend bool operator>=(const QString &s1, QLatin1StringView s2) noexcept
Definition qstring.h:711
QString(DataPointer &&dd)
Definition qstring.h:907
static int compare(QStringView s1, const QString &s2, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.h:646
void push_front(const QString &s)
This function is provided for STL compatibility, prepending the given other string to the beginning o...
Definition qstring.h:871
static QString fromUcs4(const char32_t *, qsizetype size=-1)
Definition qstring.cpp:5915
QString & prepend(QStringView v)
Definition qstring.h:414
void clear()
Clears the contents of the string and makes it null.
Definition qstring.h:1107
const QChar * constData() const
Returns a pointer to the data stored in the QString.
Definition qstring.h:1101
ushort toUShort(bool *ok=nullptr, int base=10) const
Returns the string converted to an {unsigned short} using base base, which is 10 by default and must ...
Definition qstring.h:658
friend bool operator>=(const QString &s1, const char16_t *s2) noexcept
Definition qstring.h:739
qsizetype size_type
Definition qstring.h:861
friend bool operator<=(const QString &lhs, QChar rhs) noexcept
Definition qstring.h:764
QString(QString &&other) noexcept=default
Move-constructs a QString instance, making it point at the same object that other was pointing to.
friend bool operator<=(std::nullptr_t, const QString &s2) noexcept
Definition qstring.h:731
bool isValidUtf16() const noexcept
Definition qstring.h:903
friend bool operator>=(const QString &s1, const QString &s2) noexcept
Returns true if string s1 is lexically greater than or equal to string s2; otherwise returns false.
Definition qstring.h:701
const_iterator cbegin() const
Definition qstring.h:1201
QString toCaseFolded() const &
Definition qstring.h:376
reverse_iterator rend()
Definition qstring.h:854
bool isNull() const
Returns true if this string is null; otherwise returns false.
Definition qstring.h:898
QString & setUnicode(const QChar *unicode, qsizetype size)
Resizes the string to size characters and copies unicode into the string.
Definition qstring.cpp:5938
qsizetype size() const
Returns the number of characters in this string.
Definition qstring.h:182
QT_ASCII_CAST_WARN friend bool operator==(const char *s1, const QString &s2)
Definition qstring.h:825
std::string toStdString() const
Returns a std::string object with the data contained in this QString.
Definition qstring.h:1319
const QChar * const_pointer
The QString::const_pointer typedef provides an STL-style const pointer to a QString element (QChar).
Definition qstring.h:866
QT_ASCII_CAST_WARN friend bool operator!=(const char *s1, const QString &s2)
Returns true if s1 is not equal to s2; otherwise returns false.
Definition qstring.h:827
uint toUInt(bool *ok=nullptr, int base=10) const
Returns the string converted to an {unsigned int} using base base, which is 10 by default and must be...
Definition qstring.h:662
const_iterator cend() const
Definition qstring.h:1209
friend bool operator!=(const QString &s1, std::nullptr_t) noexcept
Definition qstring.h:722
void push_back(QChar c)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.h:868
QT_ASCII_CAST_WARN QString & operator=(const char *ch)
Definition qstring.h:788
QString & removeIf(Predicate pred)
Definition qstring.h:490
friend bool operator==(const char16_t *s1, const QString &s2) noexcept
Definition qstring.h:741
friend bool operator==(const QString &s1, QLatin1StringView s2) noexcept
Definition qstring.h:703
QT_ASCII_CAST_WARN QString & operator+=(const char *s)
Definition qstring.h:806
friend bool operator>=(std::nullptr_t, const QString &s2) noexcept
Definition qstring.h:732
QString simplified() &&
Definition qstring.h:386
QStringPrivate DataPointer
Definition qstring.h:160
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:5857
QString & prepend(QLatin1StringView s)
Definition qstring.h:415
QT_ASCII_CAST_WARN QString & operator+=(const QByteArray &s)
Definition qstring.h:808
QString ::type arg(Args &&...args) const
Definition qstring.h:268
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
Definition qstring.cpp:8606
QString & insert(qsizetype i, const QString &s)
Definition qstring.h:399
QByteArray toLatin1() &&
Definition qstring.h:561
QString & assign(InputIterator first, InputIterator last)
Definition qstring.h:425
SectionFlag
This enum specifies flags that can be used to affect various aspects of the section() function's beha...
Definition qstring.h:319
friend bool operator>=(QLatin1StringView s1, const QString &s2) noexcept
Definition qstring.h:718
QString section(QChar sep, qsizetype start, qsizetype end=-1, SectionFlags flags=SectionDefault) const
This function returns a section of the string.
Definition qstring.h:1139
QString first(qsizetype n) const
Definition qstring.h:337
friend bool operator!=(QChar lhs, const QString &rhs) noexcept
Definition qstring.h:756
friend bool operator!=(const char16_t *s1, const QString &s2) noexcept
Definition qstring.h:742
constexpr QString() noexcept
Constructs a null string.
Definition qstring.h:1170
bool isSharedWith(const QString &other) const
Definition qstring.h:207
QT_ASCII_CAST_WARN QString & operator=(const QByteArray &a)
Definition qstring.h:790
qsizetype capacity() const
Returns the maximum number of characters that can be stored in the string without forcing a reallocat...
Definition qstring.h:1111
qulonglong toULongLong(bool *ok=nullptr, int base=10) const
Returns the string converted to an {unsigned long long} using base base, which is 10 by default and m...
QString simplified() const &
Definition qstring.h:384
friend bool operator==(std::nullptr_t, const QString &s2) noexcept
Definition qstring.h:727
const_reverse_iterator crbegin() const
Definition qstring.h:857
QChar back() const
Definition qstring.h:216
iterator end()
Returns an \l{STL-style iterators}{STL-style iterator} pointing just after the last character in the ...
Definition qstring.h:1205
static QString fromLocal8Bit(const char *str, qsizetype size)
Returns a QString initialized with the first size characters of the 8-bit string str.
Definition qstring.h:604
static int compare(const QString &s1, QLatin1StringView s2, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.h:638
static int compare(const QString &s1, QStringView s2, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.h:644
void detach()
Definition qstring.h:1103
QString toUpper() &&
Definition qstring.h:374
QT_ASCII_CAST_WARN QString & insert(qsizetype i, const QByteArray &s)
Definition qstring.h:804
long toLong(bool *ok=nullptr, int base=10) const
Returns the string converted to a long using base base, which is 10 by default and must be between 2 ...
Definition qstring.h:664
QT_ASCII_CAST_WARN QString & insert(qsizetype i, const char *s)
Definition qstring.h:802
qlonglong toLongLong(bool *ok=nullptr, int base=10) const
Returns the string converted to a {long long} using base base, which is 10 by default and must be bet...
const QChar at(qsizetype i) const
Returns the character at the given index position in the string.
Definition qstring.h:1079
friend bool operator>=(const char16_t *s1, const QString &s2) noexcept
Definition qstring.h:746
QChar front() const
Definition qstring.h:214
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition qstring.h:1083
friend bool operator>=(QChar lhs, const QString &rhs) noexcept
Definition qstring.h:758
short toShort(bool *ok=nullptr, int base=10) const
Returns the string converted to a short using base base, which is 10 by default and must be between 2...
Definition qstring.h:656
void shrink_to_fit()
Definition qstring.h:872
static int compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.h:634
qsizetype lastIndexOf(QLatin1StringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition qstring.h:282
QString & prepend(const QChar *uc, qsizetype len)
Definition qstring.h:412
QString & operator+=(const QString &s)
Appends the string other onto the end of this string and returns a reference to this string.
Definition qstring.h:463
QString sliced(qsizetype pos, qsizetype n) const
Definition qstring.h:343
DataPointer & data_ptr()
Definition qstring.h:986
const_reverse_iterator crend() const
Definition qstring.h:858
QT_ASCII_CAST_WARN friend bool operator>=(const char *s1, const QString &s2)
Returns true if s1 is lexically greater than or equal to s2; otherwise returns false.
Definition qstring.h:835
QString toLower() const &
Definition qstring.h:368
qsizetype lastIndexOf(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition qstring.h:285
QString & append(QStringView v)
Definition qstring.h:407
QString & insert(qsizetype i, QStringView v)
Definition qstring.h:400
static QString fromStdU32String(const std::u32string &s)
Definition qstring.h:1342
QByteArray toLocal8Bit() const &
Definition qstring.h:567
auto tokenize(Needle &&needle, Flags...flags) const &&noexcept(noexcept(qTokenize(std::declval< const QString >(), std::forward< Needle >(needle), flags...))) -> decltype(qTokenize(std::move(*this), std::forward< Needle >(needle), flags...))
Definition qstring.h:534
const DataPointer & data_ptr() const
Definition qstring.h:987
void push_back(const QString &s)
This function is provided for STL compatibility, appending the given other string onto the end of thi...
Definition qstring.h:869
QChar * data()
Returns a pointer to the data stored in the QString.
Definition qstring.h:1095
bool contains(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition qstring.h:1217
static QString fromWCharArray(const wchar_t *string, qsizetype size=-1)
Definition qstring.h:1164
QString sliced(qsizetype pos) const
Definition qstring.h:341
friend bool operator<=(QChar lhs, const QString &rhs) noexcept
Definition qstring.h:757
QString & operator+=(QLatin1StringView s)
Definition qstring.h:465
void squeeze()
Releases any memory not required to store the character data.
Definition qstring.h:1181
static QString static QString qsizetype indexOf(QChar c, qsizetype from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition qstring.cpp:4420
QString & setUtf16(const ushort *utf16, qsizetype size)
Resizes the string to size characters and copies unicode into the string.
Definition qstring.h:1191
int localeAwareCompare(const QString &s) const
Definition qstring.cpp:6649
QT_ASCII_CAST_WARN QString & prepend(const QByteArray &s)
Definition qstring.h:796
auto tokenize(Needle &&needle, Flags...flags) &&noexcept(noexcept(qTokenize(std::declval< QString >(), std::forward< Needle >(needle), flags...))) -> decltype(qTokenize(std::move(*this), std::forward< Needle >(needle), flags...))
Definition qstring.h:540
std::u16string toStdU16String() const
Definition qstring.h:1339
QString trimmed() const &
Definition qstring.h:380
QString & setNum(short, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.h:1112
QString chopped(qsizetype n) const
Definition qstring.h:345
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition qstring.h:844
qptrdiff difference_type
Definition qstring.h:862
QT_ASCII_CAST_WARN QString & prepend(const char *s)
Definition qstring.h:794
QString & removeLast()
Definition qstring.h:487
ulong toULong(bool *ok=nullptr, int base=10) const
Returns the string converted to an {unsigned long} using base base, which is 10 by default and must b...
Definition qstring.h:666
static QString fromUtf8(const char *utf8, qsizetype size)
Returns a QString initialized with the first size bytes of the UTF-8 string str.
Definition qstring.h:589
QByteArray toUtf8() const &
Definition qstring.h:563
static Q_WEAK_OVERLOAD QString fromLatin1(const QByteArray &ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.h:581
friend bool operator<=(const char16_t *s1, const QString &s2) noexcept
Definition qstring.h:745
static int localeAwareCompare(const QString &s1, const QString &s2)
Compares s1 with s2 and returns an integer less than, equal to, or greater than zero if s1 is less th...
Definition qstring.h:651
QString & prepend(QUtf8StringView s)
Definition qstring.h:416
QStringList split(const QRegularExpression &sep, Qt::SplitBehavior behavior=Qt::KeepEmptyParts) const
static QString fromStdWString(const std::wstring &s)
Returns a copy of the str string.
Definition qstring.h:1333
friend bool operator>=(const QString &, std::nullptr_t) noexcept
Definition qstring.h:726
friend bool operator==(const QString &s1, std::nullptr_t) noexcept
Definition qstring.h:721
QString & prepend(QChar c)
Definition qstring.h:411
QByteArray toLocal8Bit() &&
Definition qstring.h:569
auto tokenize(Needle &&needle, Flags...flags) const &noexcept(noexcept(qTokenize(std::declval< const QString & >(), std::forward< Needle >(needle), flags...))) -> decltype(qTokenize(*this, std::forward< Needle >(needle), flags...))
Definition qstring.h:528
QString toUpper() const &
Definition qstring.h:372
std::reverse_iterator< iterator > reverse_iterator
Definition qstring.h:843
friend bool operator!=(QLatin1StringView s1, const QString &s2) noexcept
Definition qstring.h:716
const_reverse_iterator rend() const
Definition qstring.h:856
const_iterator constBegin() const
Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first character in the st...
Definition qstring.h:1203
QString toCaseFolded() &&
Definition qstring.h:378
friend bool operator>=(const QString &lhs, QChar rhs) noexcept
Definition qstring.h:765
NormalizationForm
This enum describes the various normalized forms of Unicode text.
Definition qstring.h:546
@ NormalizationForm_KD
Definition qstring.h:549
@ NormalizationForm_C
Definition qstring.h:548
@ NormalizationForm_D
Definition qstring.h:547
friend bool operator==(const QString &lhs, QChar rhs) noexcept
Definition qstring.h:760
const_iterator ConstIterator
Qt-style synonym for QString::const_iterator.
Definition qstring.h:842
qsizetype lastIndexOf(QStringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition qstring.h:289
static int compare(QLatin1StringView s1, const QString &s2, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.h:641
qsizetype length() const
Returns the number of characters in this string.
Definition qstring.h:187
reverse_iterator rbegin()
Definition qstring.h:853
friend bool operator<=(const QString &s1, const QString &s2) noexcept
Returns true if string s1 is lexically less than or equal to string s2; otherwise returns false.
Definition qstring.h:700
friend bool operator<=(QLatin1StringView s1, const QString &s2) noexcept
Definition qstring.h:717
const QChar * unicode() const
Returns a Unicode representation of the string.
Definition qstring.h:1085
int compare(QChar ch, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition qstring.h:631
const QChar * const_iterator
Definition qstring.h:840
~QString()
Destroys the string.
Definition qstring.h:1171
friend bool operator<=(const QString &s1, const char16_t *s2) noexcept
Definition qstring.h:738
bool endsWith(QStringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition qstring.h:356
void resize(qsizetype size)
Sets the size of the string to size characters.
Definition qstring.cpp:2654
static Q_WEAK_OVERLOAD QString fromUtf8(const QByteArray &ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.h:588
QChar value_type
Definition qstring.h:867
#define this
Definition dialogs.cpp:9
QString str
[2]
a resize(100000)
b clear()
list append(new Employee("Blackpool", "Stephen"))
double e
cache insert(employee->id(), employee)
QSet< QString >::iterator it
set reserve(20000)
Combined button and popup list for selecting options.
qsizetype fromUtf8(uchar b, OutputPtr &dst, InputPtr &src, InputPtr end)
\macro QT_NAMESPACE
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QByteArrayView haystack, QByteArrayView needle) noexcept
Q_CORE_EXPORT QString convertToQString(QAnyStringView s)
const QString & asString(const QString &s)
Definition qstring.h:1386
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QByteArrayView haystack, QByteArrayView needle) noexcept
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QByteArrayView haystack, qsizetype from, QByteArrayView needle) noexcept
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QByteArrayView haystack, QByteArrayView needle) noexcept
QStringViewArg qStringLikeToArg(const QString &s) noexcept
Definition qstring.h:1439
std::is_same< Char, char32_t > IsCompatibleChar32TypeHelper
Definition qstring.h:53
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QStringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Definition qstring.cpp:9631
Q_CORE_EXPORT QString argToQString(QStringView pattern, size_t n, const ArgBase **args)
Definition qstring.cpp:9032
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QStringView lhs, QStringView rhs, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
Q_ALWAYS_INLINE QString argToQStringDispatch(StringView pattern, const Args &...args)
Definition qstring.h:1433
IsCompatibleChar32TypeHelper< q20::remove_cvref_t< Char > > IsCompatibleChar32Type
Definition qstring.h:56
constexpr bool isLatin1(QLatin1StringView s) noexcept
Definition qstring.h:64
CaseSensitivity
@ CaseSensitive
@ KeepEmptyParts
Definition qnamespace.h:126
Initialization
constexpr T * to_address(T *p) noexcept
Definition q20memory.h:57
qsizetype erase_if(QByteArray &ba, Predicate pred)
Definition qbytearray.h:701
qsizetype erase(QByteArray &ba, const T &t)
Definition qbytearray.h:695
size_t qstrlen(const char *str)
#define Q_DECL_NS_RETURNS_AUTORELEASED
#define QT_WARNING_DISABLE_INTEL(number)
#define Q_DECL_CF_RETURNS_RETAINED
#define Q_WEAK_OVERLOAD
#define QT_IGNORE_DEPRECATIONS(statement)
#define QT_WARNING_POP
#define QT_WARNING_DISABLE_MSVC(number)
#define Q_ATTRIBUTE_FORMAT_PRINTF(A, B)
#define QT_WARNING_PUSH
#define Q_ALWAYS_INLINE
constexpr bool operator!=(const timespec &t1, const timespec &t2)
constexpr timespec & operator+=(timespec &t1, const timespec &t2)
#define Q_FORWARD_DECLARE_CF_TYPE(type)
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
Flags
NSUInteger capacity
static T toIntegral_helper(const QLocalePrivate *d, QStringView str, bool *ok)
Definition qlocale.cpp:1357
constexpr const T & qMax(const T &a, const T &b)
Definition qminmax.h:42
static bool contains(const QJsonArray &haystack, unsigned needle)
Definition qopengl.cpp:116
GLsizei const GLfloat * v
[13]
GLenum mode
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint GLuint end
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
GLenum GLuint GLenum GLsizei length
GLenum GLenum GLsizei count
GLdouble GLdouble right
GLfloat GLfloat f
GLenum src
GLint GLsizei width
GLint left
GLenum type
GLbitfield flags
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint start
GLboolean GLboolean g
GLint first
GLfloat n
GLint GLsizei GLsizei GLenum format
const GLubyte * c
GLuint GLfloat * val
GLenum array
GLenum GLsizei len
GLdouble GLdouble t
Definition qopenglext.h:243
GLint GLenum GLboolean normalized
Definition qopenglext.h:752
GLuint64EXT * result
[6]
GLdouble s
[6]
Definition qopenglext.h:235
GLfloat GLfloat p
[1]
GLuint GLenum option
GLubyte * pattern
GLenum GLint GLint * precision
bool operator>(const QPoint &a, const QPoint &b)
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
Definition qrandom.cpp:1219
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
static void split(QT_FT_Vector *b)
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
static bool operator<(const QSettingsIniKey &k1, const QSettingsIniKey &k2)
static constexpr QChar sep
SSL_CTX int(*) void arg)
qsizetype erase_if(QString &s, Predicate pred)
Definition qstring.h:1467
Q_CORE_EXPORT QDataStream & operator>>(QDataStream &, QString &)
Definition qstring.cpp:9350
Q_CORE_EXPORT QDataStream & operator<<(QDataStream &, const QString &)
Definition qstring.cpp:9318
QString operator+(const QString &s1, const QString &s2)
Definition qstring.h:1293
qsizetype erase(QString &s, const T &t)
Definition qstring.h:1461
static QChar * fromLocal8Bit(QChar *out, QByteArrayView in, QStringConverter::State *state)
static char * toLocal8Bit(char *out, QStringView in, QStringConverter::State *state)
QBasicUtf8StringView< false > QUtf8StringView
Definition qstringfwd.h:46
QArrayDataPointer< char16_t > QStringPrivate
constexpr auto qTokenize(Haystack &&h, Needle &&n, Flags...flags) noexcept(QtPrivate::Tok::is_nothrow_constructible_from< Haystack, Needle >::value) -> decltype(QtPrivate::Tok::TokenizerResult< Haystack, Needle >{std::forward< Haystack >(h), std::forward< Needle >(n), flags...})
QStringView qToStringViewIgnoringNull(const QStringLike &s) noexcept
#define s2
#define s1
#define QT_ASCII_CAST_WARN
#define QT_DEPRECATED_VERSION_X_6_4(text)
#define QT_DEPRECATED_VERSION_X_6_0(text)
#define QT_DEPRECATED_VERSION_X_6_8(text)
static int compare(quint64 a, quint64 b)
unsigned char uchar
Definition qtypes.h:27
unsigned long ulong
Definition qtypes.h:30
ptrdiff_t qptrdiff
Definition qtypes.h:69
quint64 qulonglong
Definition qtypes.h:59
unsigned long long quint64
Definition qtypes.h:56
ptrdiff_t qsizetype
Definition qtypes.h:70
unsigned int uint
Definition qtypes.h:29
long long qint64
Definition qtypes.h:55
unsigned short ushort
Definition qtypes.h:28
qint64 qlonglong
Definition qtypes.h:58
bool operator<=(const QUuid &lhs, const QUuid &rhs) noexcept
Definition quuid.h:272
bool operator>=(const QUuid &lhs, const QUuid &rhs) noexcept
Definition quuid.h:274
static double toDouble(Value v)
#define explicit
QByteArray ba
[0]
settings remove("monkey")
QTextStream out(stdout)
[7]
QObject::connect nullptr
ba fill(true)
list prepend("one")
list lastIndexOf("B")
list indexOf("B")
QSharedPointer< T > other(t)
[5]
QAction * at
QJSValueList args
@ CapacityReserved
the capacity was reserved by the user, try to keep it
Definition qarraydata.h:30
\inmodule QtCore \reentrant
Definition qchar.h:17
enum QtPrivate::ArgBase::Tag tag
QLatin1StringView string
Definition qstring.h:1424
constexpr QLatin1StringArg(QLatin1StringView v) noexcept
Definition qstring.h:1426
constexpr QStringViewArg(QStringView v) noexcept
Definition qstring.h:1420