49 #ifdef QT_INCLUDE_COMPAT
50 #include <Qt3Support/q3cstring.h>
56 # ifndef QT_NO_STL_WCHAR
59 # endif // QT_NO_STL_WCHAR
66 #error qstring.h must be included before any header file that defines truncate
81 template <typename T> class
QVector;
88 explicit QString(
const QChar *unicode);
90 QString(
int size,
QChar c);
91 inline QString(
const QLatin1String &latin1);
92 inline QString(
const QString &);
94 QString &operator=(
QChar c);
95 QString &operator=(
const QString &);
96 inline QString &operator=(
const QLatin1String &);
97 #ifdef Q_COMPILER_RVALUE_REFS
98 inline QString &operator=(QString &&other)
99 {
qSwap(d, other.d);
return *
this; }
102 inline int size()
const {
return d->size; }
103 inline int count()
const {
return d->size; }
104 inline int length()
const;
105 inline bool isEmpty()
const;
106 void resize(
int size);
108 QString &fill(
QChar c,
int size = -1);
109 void truncate(
int pos);
112 int capacity()
const;
113 inline void reserve(
int size);
114 inline void squeeze() {
if (d->size < d->alloc || d->ref != 1) realloc(); d->capacity = 0;}
116 inline const QChar *unicode()
const;
119 inline const QChar *constData()
const;
121 inline void detach();
122 inline bool isDetached()
const;
123 inline bool isSharedWith(
const QString &other)
const {
return d == other.d; }
126 inline const QChar at(
int i)
const;
127 const QChar operator[](
int i)
const;
128 QCharRef operator[](
int i);
129 const QChar operator[](uint i)
const;
130 QCharRef operator[](uint i);
132 QString arg(
qlonglong a,
int fieldwidth=0,
int base=10,
134 QString arg(
qulonglong a,
int fieldwidth=0,
int base=10,
136 QString arg(
long a,
int fieldwidth=0,
int base=10,
138 QString arg(ulong a,
int fieldwidth=0,
int base=10,
140 QString arg(
int a,
int fieldWidth = 0,
int base = 10,
142 QString arg(uint a,
int fieldWidth = 0,
int base = 10,
144 QString arg(
short a,
int fieldWidth = 0,
int base = 10,
146 QString arg(ushort a,
int fieldWidth = 0,
int base = 10,
148 QString arg(
double a,
int fieldWidth = 0,
char fmt = '
g',
int prec = -1,
150 QString arg(
char a,
int fieldWidth = 0,
152 QString arg(
QChar a,
int fieldWidth = 0,
154 QString arg(const QString &a,
int fieldWidth = 0,
156 QString arg(const QString &a1, const QString &a2) const Q_REQUIRED_RESULT;
157 QString arg(const QString &a1, const QString &a2, const QString &a3) const Q_REQUIRED_RESULT;
158 QString arg(const QString &a1, const QString &a2, const QString &a3,
159 const QString &a4) const Q_REQUIRED_RESULT;
160 QString arg(const QString &a1, const QString &a2, const QString &a3,
161 const QString &a4, const QString &a5) const Q_REQUIRED_RESULT;
162 QString arg(const QString &a1, const QString &a2, const QString &a3,
163 const QString &a4, const QString &a5, const QString &a6) const Q_REQUIRED_RESULT;
164 QString arg(const QString &a1, const QString &a2, const QString &a3,
165 const QString &a4, const QString &a5, const QString &a6,
166 const QString &a7) const Q_REQUIRED_RESULT;
167 QString arg(const QString &a1, const QString &a2, const QString &a3,
168 const QString &a4, const QString &a5, const QString &a6,
169 const QString &a7, const QString &a8) const Q_REQUIRED_RESULT;
170 QString arg(const QString &a1, const QString &a2, const QString &a3,
171 const QString &a4, const QString &a5, const QString &a6,
172 const QString &a7, const QString &a8, const QString &a9) const Q_REQUIRED_RESULT;
174 QString &vsprintf(const
char *
format, va_list ap)
175 #if defined(Q_CC_GNU) && !defined(__INSURE__)
176 __attribute__ ((format (printf, 2, 0)))
179 QString &sprintf(
const char *format, ...)
180 #if defined(Q_CC_GNU) && !defined(__INSURE__)
181 __attribute__ ((format (printf, 2, 3)))
202 int indexOf(
const QRegExp &,
int from = 0)
const;
203 int lastIndexOf(
const QRegExp &,
int from = -1)
const;
204 inline QBool
contains(
const QRegExp &rx)
const {
return QBool(indexOf(rx) != -1); }
205 int count(
const QRegExp &)
const;
207 int indexOf(QRegExp &,
int from = 0)
const;
208 int lastIndexOf(QRegExp &,
int from = -1)
const;
209 inline QBool
contains(QRegExp &rx)
const {
return QBool(indexOf(rx) != -1); }
213 SectionDefault = 0x00,
214 SectionSkipEmpty = 0x01,
215 SectionIncludeLeadingSep = 0x02,
216 SectionIncludeTrailingSep = 0x04,
217 SectionCaseInsensitiveSeps = 0x08
219 Q_DECLARE_FLAGS(SectionFlags, SectionFlag)
221 QString section(
QChar sep,
int start,
int end = -1, SectionFlags flags = SectionDefault) const;
222 QString section(const QString &in_sep,
int start,
int end = -1, SectionFlags flags = SectionDefault) const;
224 QString section(
const QRegExp ®,
int start,
int end = -1, SectionFlags flags = SectionDefault)
const;
229 QString mid(
int position,
int n = -1) const Q_REQUIRED_RESULT;
230 QStringRef leftRef(
int n) const Q_REQUIRED_RESULT;
231 QStringRef rightRef(
int n) const Q_REQUIRED_RESULT;
232 QStringRef midRef(
int position,
int n = -1) const Q_REQUIRED_RESULT;
243 QString leftJustified(
int width,
QChar fill =
QLatin1Char(' '),
bool trunc = false) const Q_REQUIRED_RESULT;
244 QString rightJustified(
int width,
QChar fill = QLatin1Char(' '),
bool trunc = false) const Q_REQUIRED_RESULT;
246 QString toLower() const Q_REQUIRED_RESULT;
247 QString toUpper() const Q_REQUIRED_RESULT;
248 QString toCaseFolded() const Q_REQUIRED_RESULT;
250 QString trimmed() const Q_REQUIRED_RESULT;
251 QString simplified() const Q_REQUIRED_RESULT;
253 QString &insert(
int i,
QChar c);
254 QString &insert(
int i, const
QChar *uc,
int len);
255 inline QString &insert(
int i, const QString &s) {
return insert(i, s.constData(), s.length()); }
256 QString &insert(
int i,
const QLatin1String &
s);
257 QString &append(
QChar c);
258 QString &append(
const QString &
s);
259 QString &append(
const QStringRef &
s);
260 QString &append(
const QLatin1String &
s);
262 inline QString &
prepend(
const QString &
s) {
return insert(0, s); }
263 inline QString &
prepend(
const QLatin1String &
s) {
return insert(0, s); }
266 if (d->ref != 1 || d->size + 1 > d->alloc)
267 realloc(grow(d->size + 1));
268 d->data[d->size++] = c.
unicode();
269 d->data[d->size] =
'\0';
274 inline QString &
operator+=(
const QString &
s) {
return append(s); }
275 inline QString &
operator+=(
const QStringRef &
s) {
return append(s); }
276 inline QString &
operator+=(
const QLatin1String &
s) {
return append(s); }
278 QString &
remove(
int i,
int len);
281 QString &replace(
int i,
int len,
QChar after);
282 QString &replace(
int i,
int len,
const QChar *s,
int slen);
283 QString &replace(
int i,
int len,
const QString &after);
289 QString &replace(
const QString &before,
const QString &after,
294 QString &replace(
const QRegExp &rx,
const QString &after);
295 inline QString &
remove(
const QRegExp &rx)
296 {
return replace(rx, QString()); }
301 QStringList split(
const QString &sep, SplitBehavior behavior = KeepEmptyParts,
303 QStringList split(const
QChar &sep, SplitBehavior behavior = KeepEmptyParts,
306 QStringList split(
const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const Q_REQUIRED_RESULT;
318 QString repeated(
int times)
const;
320 const ushort *utf16()
const;
323 QByteArray toLatin1() const Q_REQUIRED_RESULT;
325 QByteArray toLocal8Bit() const Q_REQUIRED_RESULT;
326 QVector<uint> toUcs4() const Q_REQUIRED_RESULT;
328 static QString fromAscii(const
char *,
int size = -1);
329 static QString fromLatin1(const
char *,
int size = -1);
330 static QString fromUtf8(const
char *,
int size = -1);
331 static QString fromLocal8Bit(const
char *,
int size = -1);
332 static QString fromUtf16(const ushort *,
int size = -1);
333 static QString fromUcs4(const uint *,
int size = -1);
334 static QString fromRawData(const
QChar *,
int size);
336 int toWCharArray(
wchar_t *array) const;
337 static QString fromWCharArray(const
wchar_t *,
int size = -1);
339 QString &setRawData(const QChar *unicode,
int size);
340 QString &setUnicode(const QChar *unicode,
int size);
341 inline QString &setUtf16(const ushort *utf16,
int size);
344 int compare(const QString &s) const;
350 static
inline int compare(const QString &s1, const QString &s2)
351 {
return s1.compare(s2); }
355 static inline int compare(
const QString& s1,
const QLatin1String &s2,
358 static inline int compare(
const QLatin1String& s1,
const QString &s2,
360 {
return -s2.
compare(s1, cs); }
363 static int compare(
const QString &s1,
const QStringRef &s2,
366 int localeAwareCompare(
const QString& s)
const;
370 int localeAwareCompare(
const QStringRef &s)
const;
371 static int localeAwareCompare(
const QString& s1,
const QStringRef& s2);
373 short toShort(
bool *ok=0,
int base=10)
const;
374 ushort toUShort(
bool *ok=0,
int base=10)
const;
375 int toInt(
bool *ok=0,
int base=10)
const;
376 uint toUInt(
bool *ok=0,
int base=10)
const;
377 long toLong(
bool *ok=0,
int base=10)
const;
378 ulong toULong(
bool *ok=0,
int base=10)
const;
379 qlonglong toLongLong(
bool *ok=0,
int base=10)
const;
380 qulonglong toULongLong(
bool *ok=0,
int base=10)
const;
381 float toFloat(
bool *ok=0)
const;
382 double toDouble(
bool *ok=0)
const;
384 QString &setNum(
short,
int base=10);
385 QString &setNum(ushort,
int base=10);
386 QString &setNum(
int,
int base=10);
387 QString &setNum(uint,
int base=10);
388 QString &setNum(
long,
int base=10);
389 QString &setNum(ulong,
int base=10);
392 QString &setNum(
float,
char f=
'g',
int prec=6);
393 QString &setNum(
double,
char f=
'g',
int prec=6);
395 static QString number(
int,
int base=10);
396 static QString number(uint,
int base=10);
397 static QString number(
long,
int base=10);
398 static QString number(ulong,
int base=10);
399 static QString number(
qlonglong,
int base=10);
400 static QString number(
qulonglong,
int base=10);
401 static QString number(
double,
char f=
'g',
int prec=6);
405 inline bool operator>(
const QString &s)
const {
return s < *
this; }
410 bool operator==(
const QLatin1String &s)
const;
411 bool operator<(
const QLatin1String &s)
const;
412 bool operator>(
const QLatin1String &s)
const;
418 #ifndef QT_NO_CAST_FROM_ASCII
419 inline QT_ASCII_CAST_WARN_CONSTRUCTOR
QString(
const char *ch) : d(fromAscii_helper(ch))
422 : d(fromAscii_helper(a.constData(),
qstrnlen(a.constData(), a.size())))
424 inline QT_ASCII_CAST_WARN QString &
operator=(
const char *ch)
425 {
return (*
this = fromAscii(ch)); }
432 inline QT_ASCII_CAST_WARN QString &
prepend(
const char *s)
436 inline QT_ASCII_CAST_WARN QString &
append(
const char *s)
447 inline QT_ASCII_CAST_WARN
bool operator==(
const char *s)
const;
448 inline QT_ASCII_CAST_WARN
bool operator!=(
const char *s)
const;
449 inline QT_ASCII_CAST_WARN
bool operator<(
const char *s)
const;
450 inline QT_ASCII_CAST_WARN
bool operator<=(
const char *s2)
const;
451 inline QT_ASCII_CAST_WARN
bool operator>(
const char *s2)
const;
452 inline QT_ASCII_CAST_WARN
bool operator>=(
const char *s2)
const;
471 const_iterator begin()
const;
472 const_iterator constBegin()
const;
474 const_iterator
end()
const;
475 const_iterator constEnd()
const;
487 static inline QString fromStdString(
const std::string &s);
490 static inline QString fromStdWString(
const std::wstring &s);
491 inline std::wstring toStdWString()
const;
493 # ifndef QT_NO_STL_WCHAR
494 static inline QString fromStdWString(
const QStdWString &s);
496 # endif // QT_NO_STL_WCHAR
504 inline QString &
operator=(
const Null &) { *
this = QString();
return *
this; }
505 inline bool isNull()
const {
return d == &shared_null; }
508 inline QT3_SUPPORT
const char *ascii()
const {
return ascii_helper(); }
509 inline QT3_SUPPORT
const char *latin1()
const {
return latin1_helper(); }
510 inline QT3_SUPPORT
QByteArray utf8()
const {
return toUtf8(); }
511 inline QT3_SUPPORT
QByteArray local8Bit()
const{
return toLocal8Bit(); }
512 inline QT3_SUPPORT
void setLength(
int nl) { resize(nl); }
513 inline QT3_SUPPORT QString copy()
const {
return *
this; }
514 inline QT3_SUPPORT QString &
remove(
QChar c,
bool cs)
516 inline QT3_SUPPORT QString &
remove(
const QString &
s,
bool cs)
518 inline QT3_SUPPORT QString &replace(
QChar c,
const QString &after,
bool cs)
520 inline QT3_SUPPORT QString &replace(
const QString &before,
const QString &after,
bool cs)
522 #ifndef QT_NO_CAST_FROM_ASCII
523 inline QT3_SUPPORT QString &replace(
char c,
const QString &after,
bool cs)
529 inline QT3_SUPPORT
int find(
QChar c,
int i = 0,
bool cs =
true)
const
531 inline QT3_SUPPORT
int find(
const QString &s,
int i = 0,
bool cs =
true)
const
533 inline QT3_SUPPORT
int findRev(
QChar c,
int i = -1,
bool cs =
true)
const
535 inline QT3_SUPPORT
int findRev(
const QString &s,
int i = -1,
bool cs =
true)
const
538 inline QT3_SUPPORT
int find(
const QRegExp &rx,
int i=0)
const
539 {
return indexOf(rx, i); }
540 inline QT3_SUPPORT
int findRev(
const QRegExp &rx,
int i=-1)
const
541 {
return lastIndexOf(rx, i); }
542 inline QT3_SUPPORT
int find(QRegExp &rx,
int i=0)
const
543 {
return indexOf(rx, i); }
544 inline QT3_SUPPORT
int findRev(QRegExp &rx,
int i=-1)
const
545 {
return lastIndexOf(rx, i); }
547 inline QT3_SUPPORT QBool contains(
QChar c,
bool cs)
const
549 inline QT3_SUPPORT QBool contains(
const QString &s,
bool cs)
const
551 inline QT3_SUPPORT
bool startsWith(
const QString &s,
bool cs)
const
553 inline QT3_SUPPORT
bool endsWith(
const QString &s,
bool cs)
const
555 inline QT3_SUPPORT
QChar constref(uint i)
const
558 inline QT3_SUPPORT QString leftJustify(
int width,
QChar aFill =
QLatin1Char(
' '),
bool trunc=
false)
const
559 {
return leftJustified(width, aFill, trunc); }
560 inline QT3_SUPPORT QString rightJustify(
int width,
QChar aFill =
QLatin1Char(
' '),
bool trunc=
false)
const
561 {
return rightJustified(width, aFill, trunc); }
562 inline QT3_SUPPORT QString lower()
const {
return toLower(); }
563 inline QT3_SUPPORT QString upper()
const {
return toUpper(); }
564 inline QT3_SUPPORT QString stripWhiteSpace()
const {
return trimmed(); }
565 inline QT3_SUPPORT QString simplifyWhiteSpace()
const {
return simplified(); }
566 inline QT3_SUPPORT QString &setUnicodeCodes(
const ushort *unicode_as_ushorts,
int aSize)
567 {
return setUtf16(unicode_as_ushorts, aSize); }
568 inline QT3_SUPPORT
const ushort *ucs2()
const {
return utf16(); }
569 inline static QT3_SUPPORT QString fromUcs2(
const ushort *unicode,
int size = -1)
570 {
return fromUtf16(unicode, size); }
571 inline QT3_SUPPORT QString &setAscii(
const char *str,
int len = -1)
572 { *
this = fromAscii(str,
len);
return *
this; }
573 inline QT3_SUPPORT QString &setLatin1(
const char *str,
int len = -1)
574 { *
this = fromLatin1(str,
len);
return *
this; }
577 const char *ascii_helper()
const;
578 const char *latin1_helper()
const;
580 #ifndef QT_NO_CAST_TO_ASCII
581 inline QT3_SUPPORT
operator const char *()
const {
return ascii_helper(); }
583 QT3_SUPPORT
operator QNoImplicitBoolCast()
const;
588 bool isSimpleText()
const {
if (!d->clean) updateProperties();
return d->simpletext; }
589 bool isRightToLeft()
const;
594 #if defined(QT_NO_CAST_FROM_ASCII) && !defined(Q_NO_DECLARED_NOT_DEFINED)
597 QString(
const char *ch);
599 QString &operator=(
const char *ch);
608 ushort simpletext : 1;
609 ushort righttoleft : 1;
610 ushort asciiCache : 1;
612 ushort reserved : 11;
616 static Data shared_null;
617 static Data shared_empty;
619 QString(Data *dd,
int ) : d(dd) {}
620 #ifndef QT_NO_TEXTCODEC
621 static QTextCodec *codecForCStrings;
623 static int grow(
int);
624 static void free(Data *);
626 void realloc(
int alloc);
628 void updateProperties()
const;
629 QString multiArg(
int numArgs,
const QString **args)
const;
630 static int compare_helper(
const QChar *data1,
int length1,
631 const QChar *data2,
int length2,
633 static int compare_helper(
const QChar *data1,
int length1,
636 static int localeAwareCompare_helper(
const QChar *data1,
int length1,
637 const QChar *data2,
int length2);
638 static Data *fromLatin1_helper(
const char *str,
int size = -1);
639 static Data *fromAscii_helper(
const char *str,
int size = -1);
640 void replace_helper(uint *
indices,
int nIndices,
int blen,
const QChar *after,
int alen);
641 friend class QCharRef;
642 friend class QCFString;
643 friend class QTextCodec;
644 friend class QStringRef;
654 class Q_CORE_EXPORT QLatin1String
658 inline QLatin1String &
operator=(
const QLatin1String &other)
659 { chars = other.chars;
return *
this; }
661 inline const char *
latin1()
const {
return chars; }
664 {
return s == *
this; }
666 {
return s != *
this; }
668 {
return s < *
this; }
670 {
return s > *
this; }
672 {
return s <= *
this; }
674 {
return s >= *
this; }
676 inline QT_ASCII_CAST_WARN
bool operator==(
const char *s)
const
678 inline QT_ASCII_CAST_WARN
bool operator!=(
const char *s)
const
680 inline QT_ASCII_CAST_WARN
bool operator<(
const char *s)
const
682 inline QT_ASCII_CAST_WARN
bool operator>(
const char *s)
const
684 inline QT_ASCII_CAST_WARN
bool operator<=(
const char *s)
const
686 inline QT_ASCII_CAST_WARN
bool operator>=(
const char *s)
const
694 inline QString::QString(
const QLatin1String &aLatin1) : d(fromLatin1_helper(aLatin1.latin1()))
699 { Q_ASSERT(uint(i) < uint(
size()));
return d->data[i]; }
701 { Q_ASSERT(uint(i) < uint(
size()));
return d->data[i]; }
703 { Q_ASSERT(i < uint(
size()));
return d->data[i]; }
705 {
return d->size == 0; }
707 {
return reinterpret_cast<const QChar*
>(d->data); }
709 {
return reinterpret_cast<const QChar*
>(d->data); }
711 {
detach();
return reinterpret_cast<QChar*
>(d->data); }
713 {
return reinterpret_cast<const QChar*
>(d->data); }
715 {
if (d->ref != 1 || d->data != d->array) realloc(); }
717 {
return d->ref == 1; }
726 { Q_ASSERT(&other !=
this); d->ref.ref(); }
742 {
return setNum(
double(n),f,prec); }
744 {
return arg(
qlonglong(a), fieldWidth, base, fillChar); }
748 {
return arg(
qlonglong(a), fieldWidth, base, fillChar); }
752 {
return arg(
qlonglong(a), fieldWidth, base, fillChar); }
755 inline QString
QString::arg(
const QString &a1,
const QString &a2)
const
756 {
const QString *args[2] = { &a1, &a2 };
return multiArg(2, args); }
757 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3)
const
758 {
const QString *args[3] = { &a1, &a2, &a3 };
return multiArg(3, args); }
759 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3,
760 const QString &a4)
const
761 {
const QString *args[4] = { &a1, &a2, &a3, &a4 };
return multiArg(4, args); }
762 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3,
763 const QString &a4,
const QString &a5)
const
764 {
const QString *args[5] = { &a1, &a2, &a3, &a4, &a5 };
return multiArg(5, args); }
765 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3,
766 const QString &a4,
const QString &a5,
const QString &a6)
const
767 {
const QString *args[6] = { &a1, &a2, &a3, &a4, &a5, &a6 };
return multiArg(6, args); }
768 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3,
769 const QString &a4,
const QString &a5,
const QString &a6,
770 const QString &a7)
const
771 {
const QString *args[7] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7 };
return multiArg(7, args); }
772 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3,
773 const QString &a4,
const QString &a5,
const QString &a6,
774 const QString &a7,
const QString &a8)
const
775 {
const QString *args[8] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8 };
return multiArg(8, args); }
776 inline QString
QString::arg(
const QString &a1,
const QString &a2,
const QString &a3,
777 const QString &a4,
const QString &a5,
const QString &a6,
778 const QString &a7,
const QString &a8,
const QString &a9)
const
779 {
const QString *args[9] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9 };
return multiArg(9, args); }
785 class Q_CORE_EXPORT QCharRef {
788 inline QCharRef(QString &str,
int idx)
790 friend class QString;
797 {
return i < s.d->size ? s.d->data[i] : 0; }
799 {
if (i >= s.d->size) s.expand(i);
else s.detach();
800 s.d->data[i] = c.
unicode();
return *
this; }
803 #ifndef QT_NO_CAST_FROM_ASCII
847 inline void setCell(uchar cell);
848 inline void setRow(uchar
row);
850 #ifdef Q_COMPILER_MANGLES_RETURN_TYPE
859 ushort&
unicode() {
return s.data()[i].unicode(); }
862 inline QT3_SUPPORT
bool mirrored()
const {
return hasMirrored(); }
865 #ifdef Q_COMPILER_MANGLES_RETURN_TYPE
866 const QT3_SUPPORT
char latin1()
const {
return QChar(*this).
toLatin1(); }
867 const QT3_SUPPORT
char ascii()
const {
return QChar(*this).
toAscii(); }
869 QT3_SUPPORT
char latin1()
const {
return QChar(*this).
toLatin1(); }
870 QT3_SUPPORT
char ascii()
const {
return QChar(*this).
toAscii(); }
881 inline void QString::reserve(
int asize) {
if (d->ref != 1 || asize > d->alloc) realloc(asize); d->capacity = 1;}
883 {
return setUnicode(reinterpret_cast<const QChar *>(autf16), asize); }
885 { Q_ASSERT(i >= 0);
return QCharRef(*
this, i); }
889 {
detach();
return reinterpret_cast<QChar*
>(d->data); }
891 {
return reinterpret_cast<const QChar*
>(d->data); }
893 {
return reinterpret_cast<const QChar*
>(d->data); }
895 {
detach();
return reinterpret_cast<QChar*
>(d->data + d->size); }
897 {
return reinterpret_cast<const QChar*
>(d->data + d->size); }
899 {
return reinterpret_cast<const QChar*
>(d->data + d->size); }
901 {
return QBool(
indexOf(s, 0, cs) != -1); }
903 {
return QBool(
indexOf(s, 0, cs) != -1); }
905 {
return QBool(
indexOf(c, 0, cs) != -1); }
915 #ifndef QT_NO_CAST_FROM_ASCII
918 # ifndef QT_NO_TEXTCODEC
921 return (s1 == QLatin1String(s2));
936 inline QT_ASCII_CAST_WARN
bool operator==(
const char *s1,
const QString &s2)
938 inline QT_ASCII_CAST_WARN
bool operator!=(
const char *s1,
const QString &s2)
940 inline QT_ASCII_CAST_WARN
bool operator<(
const char *s1,
const QString &s2)
942 inline QT_ASCII_CAST_WARN
bool operator>(
const char *s1,
const QString &s2)
944 inline QT_ASCII_CAST_WARN
bool operator<=(
const char *s1,
const QString &s2)
946 inline QT_ASCII_CAST_WARN
bool operator>=(
const char *s1,
const QString &s2)
949 inline QT_ASCII_CAST_WARN
bool operator==(
const char *s1,
const QLatin1String &s2)
951 inline QT_ASCII_CAST_WARN
bool operator!=(
const char *s1,
const QLatin1String &s2)
953 inline QT_ASCII_CAST_WARN
bool operator<(
const char *s1,
const QLatin1String &s2)
955 inline QT_ASCII_CAST_WARN
bool operator>(
const char *s1,
const QLatin1String &s2)
957 inline QT_ASCII_CAST_WARN
bool operator<=(
const char *s1,
const QLatin1String &s2)
959 inline QT_ASCII_CAST_WARN
bool operator>=(
const char *s1,
const QLatin1String &s2)
962 inline bool operator==(
const QLatin1String &s1,
const QLatin1String &s2)
964 inline bool operator!=(
const QLatin1String &s1,
const QLatin1String &s2)
966 inline bool operator<(
const QLatin1String &s1,
const QLatin1String &s2)
968 inline bool operator<=(
const QLatin1String &s1,
const QLatin1String &s2)
970 inline bool operator>(
const QLatin1String &s1,
const QLatin1String &s2)
972 inline bool operator>=(
const QLatin1String &s1,
const QLatin1String &s2)
993 #endif // QT_NO_CAST_FROM_ASCII
995 #ifndef QT_NO_CAST_TO_ASCII
1013 inline int QByteArray::find(
const QString &s,
int from)
const
1015 inline int QByteArray::findRev(
const QString &s,
int from)
const
1017 # endif // QT3_SUPPORT
1018 #endif // QT_NO_CAST_TO_ASCII
1020 #if !defined(QT_USE_FAST_OPERATOR_PLUS) && !defined(QT_USE_QSTRINGBUILDER)
1021 inline const QString
operator+(
const QString &s1,
const QString &s2)
1022 { QString
t(s1); t += s2;
return t; }
1024 { QString
t(s1); t += s2;
return t; }
1026 { QString
t(s1); t += s2;
return t; }
1027 # ifndef QT_NO_CAST_FROM_ASCII
1028 inline QT_ASCII_CAST_WARN
const QString
operator+(
const QString &s1,
const char *s2)
1030 inline QT_ASCII_CAST_WARN
const QString
operator+(
const char *s1,
const QString &s2)
1032 inline QT_ASCII_CAST_WARN
const QString
operator+(
char c,
const QString &s)
1034 inline QT_ASCII_CAST_WARN
const QString
operator+(
const QString &s,
char c)
1040 # endif // QT_NO_CAST_FROM_ASCII
1041 #endif // QT_USE_QSTRINGBUILDER
1050 # ifndef QT_NO_STL_WCHAR
1056 #if defined(_MSC_VER) && _MSC_VER >= 1400
1073 if (
int(i) > d->size || d->ref != 1)
1074 resize(qMax(
int(i), d->size));
1075 return reinterpret_cast<QChar&
>(d->data[i]);
1079 #if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE))
1085 class QConstString :
public QString
1088 inline QT3_SUPPORT_CONSTRUCTOR QConstString(
const QChar *aUnicode,
int aSize)
1089 :QString(aUnicode, aSize){}
1090 inline QT3_SUPPORT
const QString &
string()
const {
return *
this; }
1095 Q_DECLARE_SHARED(QString)
1096 Q_DECLARE_OPERATORS_FOR_FLAGS(QString::SectionFlags)
1099 class Q_CORE_EXPORT QStringRef {
1100 const QString *m_string;
1105 inline QStringRef(
const QString *
string,
int position,
int size);
1106 inline QStringRef(
const QString *
string);
1108 :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size)
1112 inline const QString *
string()
const {
return m_string; }
1114 inline int size()
const {
return m_size; }
1115 inline int count()
const {
return m_size; }
1119 m_string = other.m_string; m_position = other.m_position;
1120 m_size = other.m_size;
return *
this;
1151 inline QStringRef &operator=(
const QString *
string);
1155 return reinterpret_cast<const QChar *
>(QString::shared_null.data);
1156 return m_string->
unicode() + m_position;
1161 QByteArray toAscii() const Q_REQUIRED_RESULT;
1162 QByteArray toLatin1() const Q_REQUIRED_RESULT;
1164 QByteArray toLocal8Bit() const Q_REQUIRED_RESULT;
1165 QVector<uint> toUcs4() const Q_REQUIRED_RESULT;
1167 inline void clear() { m_string = 0; m_position = m_size = 0; }
1168 QString toString()
const;
1169 inline bool isEmpty()
const {
return m_size == 0; }
1172 QStringRef appendTo(QString *
string)
const;
1175 { Q_ASSERT(uint(i) < uint(
size()));
return m_string->
at(i + m_position); }
1180 static int compare(
const QStringRef &s1,
const QString &s2,
1182 static int compare(
const QStringRef &s1,
const QStringRef &s2,
1184 static int compare(
const QStringRef &s1, QLatin1String s2,
1187 int localeAwareCompare(
const QString &s)
const;
1188 int localeAwareCompare(
const QStringRef &s)
const;
1189 static int localeAwareCompare(
const QStringRef &s1,
const QString &s2);
1190 static int localeAwareCompare(
const QStringRef &s1,
const QStringRef &s2);
1194 { m_string = aString; m_position = 0; m_size = aString?aString->
size():0;
return *
this; }
1197 :m_string(aString), m_position(aPosition), m_size(aSize){}
1200 :m_string(aString), m_position(0), m_size(aString?aString->size() : 0){}
1202 Q_CORE_EXPORT
bool operator==(
const QStringRef &s1,
const QStringRef &s2);
1203 inline bool operator!=(
const QStringRef &s1,
const QStringRef &s2)
1204 {
return !(s1 == s2); }
1205 Q_CORE_EXPORT
bool operator==(
const QString &s1,
const QStringRef &s2);
1207 {
return !(s1 == s2); }
1209 {
return s2 == s1; }
1211 {
return s2 != s1; }
1212 Q_CORE_EXPORT
bool operator==(
const QLatin1String &s1,
const QStringRef &s2);
1213 inline bool operator!=(
const QLatin1String &s1,
const QStringRef &s2)
1214 {
return !(s1 == s2); }
1215 inline bool operator==(
const QStringRef &s1,
const QLatin1String &s2)
1216 {
return s2 == s1; }
1217 inline bool operator!=(
const QStringRef &s1,
const QLatin1String &s2)
1218 {
return s2 != s1; }
1220 Q_CORE_EXPORT
bool operator<(
const QStringRef &s1,
const QStringRef &s2);
1221 inline bool operator>(
const QStringRef &s1,
const QStringRef &s2)
1223 inline bool operator<=(
const QStringRef &s1,
const QStringRef &s2)
1224 {
return !(s1 > s2); }
1225 inline bool operator>=(
const QStringRef &s1,
const QStringRef &s2)
1226 {
return !(s1 < s2); }
1230 # ifndef QT_NO_TEXTCODEC
1233 return (s1 == QLatin1String(s2));
1236 inline QT_ASCII_CAST_WARN
bool operator==(
const char *s1,
const QStringRef &s2)
1238 inline QT_ASCII_CAST_WARN
bool operator==(
const QStringRef &s1,
const char *s2)
1240 inline QT_ASCII_CAST_WARN
bool operator!=(
const char *s1,
const QStringRef &s2)
1242 inline QT_ASCII_CAST_WARN
bool operator!=(
const QStringRef &s1,
const char *s2)
1260 {
return QString::compare_helper(s1.
constData(), s1.
length(), s2, cs); }
1276 {
return QBool(
indexOf(s, 0, cs) != -1); }
1278 {
return QBool(
indexOf(s, 0, cs) != -1); }
1280 {
return QBool(
indexOf(c, 0, cs) != -1); }
1282 {
return QBool(
indexOf(s, 0, cs) != -1); }
1290 #if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER)
QT_ASCII_CAST_WARN bool operator>(const char *s1, const QString &s2)
const QChar * constData() const
QT_ASCII_CAST_WARN bool operator<(const QByteArray &s) const
unsigned int(APIENTRYP PFNGLXGETAGPOFFSETMESAPROC)(const void *pointer)
QT_ASCII_CAST_WARN bool operator!=(const QString &s2) const
friend bool qStringComparisonHelper(const QString &s1, const char *s2)
const QChar * constData() const
QChar::UnicodeVersion unicodeVersion() const
QT_ASCII_CAST_WARN QString & operator=(const char *ch)
QString & setNum(short, int base=10)
const QChar * unicode() const
QByteArray & replace(int index, int len, const char *s)
bool operator!=(const QLatin1String &s) const
bool qStringComparisonHelper(const QString &s1, const char *s2)
QChar::Decomposition decompositionTag() const
QChar toTitleCase() const
QT_ASCII_CAST_WARN bool operator>(const QString &s2) const
QByteArray & operator+=(QByteArray &a, const QStringBuilder< A, B > &b)
QT_ASCII_CAST_WARN bool operator>=(const QString &s2) const
QString & operator+=(const QStringRef &s)
QByteArray & append(char c)
QBool contains(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
void swap(QString &other)
bool operator!=(QString::Null, QString::Null)
QT_ASCII_CAST_WARN bool operator!=(const char *s) const
QCharRef & operator=(short rc)
int toWCharArray(wchar_t *array) const
QString arg(qlonglong a, int fieldwidth=0, int base=10, const QChar &fillChar=QLatin1Char(' ')) const Q_REQUIRED_RESULT
QChar::Direction direction() const
QChar::Category category() const
QT_ASCII_CAST_WARN QString & operator+=(char c)
const char * latin1() const
bool operator>=(const QString &s) const
static QString fromAscii(const char *, int size=-1)
bool operator!=(const QString &s) const
static QChar fromAscii(char c)
bool operator<(const QString &s) const
QChar toTitleCase() const
Q_CORE_EXPORT int qstrcmp(const char *str1, const char *str2)
QT_ASCII_CAST_WARN bool operator>(const QByteArray &s) const
bool operator==(const QString &s) const
bool operator<=(const QString &s) const
static int compare(const QString &s1, const QLatin1String &s2, Qt::CaseSensitivity cs=Qt::CaseSensitive)
QStringRef(const QStringRef &other)
QT_ASCII_CAST_WARN bool operator==(const char *s) const
bool operator==(QString::Null, QString::Null)
QByteArray & insert(int i, char c)
QByteArray toAscii() const Q_REQUIRED_RESULT
QString & prepend(const QLatin1String &s)
QString decomposition() const
bool isSimpleText() const
QStringRef & operator=(const QStringRef &other)
uchar combiningClass() const
QString & operator=(QChar c)
const QChar at(int i) const
int indexOf(char c, int from=0) const
QT_ASCII_CAST_WARN QCharRef & operator=(char c)
Q_CORE_EXPORT QTextStream & right(QTextStream &s)
QString & operator+=(const QString &s)
static int compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs)
Decomposition decompositionTag() const
const_iterator constEnd() const
QChar mirroredChar() const
bool operator<(const QString &s) const
bool operator<=(const QString &s) const
const char * constData() const
GLenum GLenum GLvoid * row
static QString fromLatin1(const char *, int size=-1)
#define QT_BEGIN_NAMESPACE
int indexOf(const QString &str, int from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
const QChar * unicode() const
GLsizei GLsizei GLenum GLenum const GLvoid * data
GLenum GLsizei GLenum format
const QChar & const_reference
bool operator==(const QString &s) const
QLatin1String(const char *s)
QString & operator=(const Null &)
int compare(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QT_ASCII_CAST_WARN bool operator<(const char *s) const
const_iterator ConstIterator
GLsizei const GLchar ** string
GLuint GLuint GLsizei GLenum const GLvoid * indices
Q_INLINE_TEMPLATE void qSwap(QScopedPointer< T, Cleanup > &p1, QScopedPointer< T, Cleanup > &p2)
int localeAwareCompare(const QString &s) const
Q_DECLARE_TYPEINFO(QString, Q_MOVABLE_TYPE)
QT_ASCII_CAST_WARN QString & operator+=(const char *s)
QCharRef & operator=(int rc)
QString & setUtf16(const ushort *utf16, int size)
static int compare(const QLatin1String &s1, const QString &s2, Qt::CaseSensitivity cs=Qt::CaseSensitive)
unsigned char combiningClass() const
QCharRef & operator=(uint rc)
QCharRef & operator=(const QCharRef &c)
bool operator>=(const QString &s) const
GLuint GLuint GLsizei count
bool isLetterOrNumber() const
const_iterator constBegin() const
int compare(const QString &s) const
QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QString &s2)
void push_back(const QString &s)
GLuint GLsizei GLsizei * length
QT_ASCII_CAST_WARN bool operator>=(const QByteArray &s) const
QT_ASCII_CAST_WARN QString & operator=(char c)
Q_CORE_EXPORT QDataStream & operator<<(QDataStream &, const QString &)
Direction direction() const
QString & insert(int i, const QString &s)
const QChar operator[](int i) const
QString decomposition() const
void push_front(const QString &s)
#define Q_REQUIRED_RESULT
Category category() const
bool operator>=(const QLatin1String &s) const
QChar::Joining joining() const
QT_ASCII_CAST_WARN bool operator<(const char *s1, const QString &s2)
static QString fromStdWString(const QStdWString &s)
QString & operator+=(QChar c)
QByteArray & operator+=(char c)
QT_ASCII_CAST_WARN bool operator<(const QString &s2) const
const QChar * const_iterator
QLatin1String & operator=(const QLatin1String &other)
std::basic_string< wchar_t > QStdWString
QT_ASCII_CAST_WARN bool operator<=(const char *s) const
UnicodeVersion unicodeVersion() const
std::string toStdString() const
QCharRef & operator=(const QChar &c)
QString section(QChar sep, int start, int end=-1, SectionFlags flags=SectionDefault) const
GLint GLenum GLboolean normalized
QT_ASCII_CAST_WARN_CONSTRUCTOR QString(const char *ch)
static QString fromWCharArray(const wchar_t *, int size=-1)
static int localeAwareCompare(const QString &s1, const QString &s2)
QT_ASCII_CAST_WARN QString & prepend(const char *s)
GLubyte GLubyte GLubyte a
QT_ASCII_CAST_WARN QString & prepend(const QByteArray &s)
uint qstrnlen(const char *str, uint maxlen)
const QChar * data() const
static QString fromStdString(const std::string &s)
int lastIndexOf(char c, int from=-1) const
QT_ASCII_CAST_WARN bool operator>=(const char *s) const
QBool contains(const QString &str, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QStdWString toStdWString() const
QString & operator+=(QChar::SpecialCharacter c)
bool operator!=(const QString &s) const
bool operator<=(const QLatin1String &s) const
QCharRef & operator=(ushort rc)
QBool contains(QRegExp &rx) const
QChar mirroredChar() const
bool operator>(const QString &s) const
QString & prepend(const QString &s)
QT_ASCII_CAST_WARN QString & append(const char *s)
QString & operator+=(const QLatin1String &s)
const QChar at(int i) const
const QString * string() const
QT_ASCII_CAST_WARN bool operator<=(const QString &s2) const
QT_ASCII_CAST_WARN QString & operator+=(const QByteArray &s)
QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QString &s2)
QT_ASCII_CAST_WARN bool operator==(const QString &s2) const
bool isSharedWith(const QString &other) const
QT_ASCII_CAST_WARN QCharRef & operator=(uchar c)
Q_CORE_EXPORT QTextStream & left(QTextStream &s)
const QString operator+(const QString &s1, const QString &s2)
QByteArray toLatin1() const Q_REQUIRED_RESULT
bool operator>(const QString &s) const
QString & setUnicode(const QChar *unicode, int size)
int localeAwareCompare(const QString &s) const
Q_CORE_EXPORT QDataStream & operator>>(QDataStream &, QString &)
QT_ASCII_CAST_WARN bool operator<=(const QByteArray &s) const
QString & prepend(QChar c)
QBool contains(const QRegExp &rx) const
int indexOf(QChar c, int from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QT_ASCII_CAST_WARN bool operator>(const char *s) const
QT_ASCII_CAST_WARN_CONSTRUCTOR QString(const QByteArray &a)
QT_ASCII_CAST_WARN QString & operator=(const QByteArray &a)
QT_ASCII_CAST_WARN QString & append(const QByteArray &s)