Spec-Zone.ru › Qt 6.1

Класс QString

Класс QString предоставляет строку символов Юникода. Подробнее...

Заголовок: #include <QString>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются реентерабельными.

Публичные типы

ConstIterator
Iterator
перечисление NormalizationForm { NormalizationForm_D, NormalizationForm_C, NormalizationForm_KD, NormalizationForm_KC }
перечисление SectionFlag { SectionDefault, SectionSkipEmpty, SectionIncludeLeadingSep, SectionIncludeTrailingSep, SectionCaseInsensitiveSeps }
флаги SectionFlags
const_iterator
const_pointer
const_reference
const_reverse_iterator
difference_type
iterator
pointer
reference
reverse_iterator
size_type
value_type

Публичные функции

QString(const QByteArray &ba)
QString(const char *str)
QString(QString &&other)
QString(const QString &other)
QString(const char8_t *str)
QString(QLatin1String str)
QString(qsizetype size, QChar ch)
QString(QChar ch)
QString(const QChar *unicode, qsizetype size = -1)
QString()
QString & operator=(const QByteArray &ba)
QString & operator=(QString &&other)
QString & operator=(const QString &other)
~QString()
QString & append(const QString &str)
QString & append(QChar ch)
QString & append(const QChar *str, qsizetype len)
QString & append(QLatin1String str)
QString & append(const char *str)
QString & append(const QByteArray &ba)
QString arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
QString arg(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(short a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(ushort a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
QString arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const
QString arg(char a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
QString arg(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
QString arg(QStringView a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
QString arg(QLatin1String a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
QString arg(Args &&... args) const
const QChar at(qsizetype position) const
QChar back() const
QChar & back()
QString::iterator begin()
QString::const_iterator begin() const
qsizetype capacity() const
QString::const_iterator cbegin() const
QString::const_iterator cend() const
void chop(qsizetype n)
QString chopped(qsizetype len) const
void clear()
int compare(const QString &other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int compare(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int compare(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QString::const_iterator constBegin() const
const QChar * constData() const
QString::const_iterator constEnd() const
bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool содержит(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const
qsizetype количество(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype количество() const
qsizetype количество(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype количество(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype количество(const QRegularExpression &re) const
QString::const_reverse_iterator обратный_начало() const
QString::const_reverse_iterator обратный_конец() const
QChar * данные()
const QChar * данные() const
QString::iterator конец()
QString::const_iterator конец() const
bool заканчивается_на(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool заканчивается_на(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool заканчивается_на(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool заканчивается_на(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QString::iterator удалить(QString::const_iterator first, QString::const_iterator last)
QString & заполнить(QChar ch, qsizetype size = -1)
QString первые(qsizetype n) const
QChar первый() const
QChar & первый()
qsizetype найти(QLatin1String str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype найти(QChar ch, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype найти(const QString &str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype найти(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype найти(const QRegularExpression &re, qsizetype from = 0, QRegularExpressionMatch *rmatch = nullptr) const
QString & вставить(qsizetype position, const QString &str)
QString & вставить(qsizetype position, QChar ch)
QString & вставить(qsizetype position, const QChar *unicode, qsizetype size)
QString & вставить(qsizetype position, QStringView str)
QString & вставить(qsizetype position, QLatin1String str)
QString & вставить(qsizetype position, const char *str)
QString & вставить(qsizetype position, const QByteArray &str)
bool пустая() const
bool в_нижнем_регистре() const
bool пустая_ссылка() const
bool справа_налево() const
bool в_верхнем_регистре() const
bool корректный_utf16() const
QString последние(qsizetype n) const
qsizetype последнее_вхождение(const QString &str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype последнее_вхождение(QChar ch, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype последнее_вхождение(QLatin1String str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype последнее_вхождение(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetype последнее_вхождение(const QRegularExpression &re, qsizetype from = -1, QRegularExpressionMatch *rmatch = nullptr) const
QString левая_часть(qsizetype n) const
QString выравнивание_влево(qsizetype width, QChar fill = QLatin1Char(' '), bool truncate = false) const
qsizetype длина() const
int сравнение_с_учётом_локали(const QString &other) const
int сравнение_с_учётом_локали(QStringView other) const
QString срединная_часть(qsizetype position, qsizetype n = -1) const
QString нормализованная_форма(QString::NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const
QString & добавить_в_начало(const QString &str)
QString & добавить_в_начало(QChar ch)
QString & добавить_в_начало(const QChar *str, qsizetype len)
QString & prepend(QStringView str)
QString & prepend(QLatin1String str)
QString & prepend(const char *str)
QString & prepend(const QByteArray &ba)
void push_back(const QString &other)
void push_back(QChar ch)
void push_front(const QString &other)
void push_front(QChar ch)
QString::reverse_iterator rbegin()
QString::const_reverse_iterator rbegin() const
QString & remove(qsizetype position, qsizetype n)
QString & remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & remove(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & remove(const QRegularExpression &re)
QString & removeIf(Predicate pred)
QString::reverse_iterator rend()
QString::const_reverse_iterator rend() const
QString repeated(qsizetype times) const
QString & replace(qsizetype position, qsizetype n, const QString &after)
QString & replace(qsizetype position, qsizetype n, QChar after)
QString & replace(qsizetype position, qsizetype n, const QChar *unicode, qsizetype size)
QString & replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(const QChar *before, qsizetype blen, const QChar *after, qsizetype alen, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(QChar ch, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString & replace(const QRegularExpression &re, const QString &after)
void reserve(qsizetype size)
void resize(qsizetype size)
void resize(qsizetype size, QChar fillChar)
QString right(qsizetype n) const
QString rightJustified(qsizetype width, QChar fill = QLatin1Char(' '), bool truncate = false) const
QString section(QChar sep, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const
QString section(const QString &sep, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const
QString section(const QRegularExpression &re, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const
QString & setNum(int n, int base = 10)
QString & setNum(short n, int base = 10)
QString & setNum(ushort n, int base = 10)
QString & setNum(uint n, int base = 10)
QString & setNum(long n, int base = 10)
QString & setNum(ulong n, int base = 10)
QString & setNum(qlonglong n, int base = 10)
QString & setNum(qulonglong n, int base = 10)
QString & setNum(float n, char format = 'g', int precision = 6)
QString & setNum(double n, char format = 'g', int precision = 6)
QString & setRawData(const QChar *unicode, qsizetype size)
QString & setUnicode(const QChar *unicode, qsizetype size)
QString & setUtf16(const ushort *unicode, qsizetype size)
void shrink_to_fit()
QString simplified() const
qsizetype размер() const
QString вырезанный(qsizetype pos, qsizetype n) const
QString вырезанный(qsizetype pos) const
QStringList разделить(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringList разделить(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringList разделить(const QRegularExpression &re, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const
void сжать()
bool начинается_с(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool начинается_с(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool начинается_с(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool начинается_с(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
void поменять(QString &other)
CFStringRef toCFString() const
QString с_складыванием_регистра() const
double к_double(bool *ok = nullptr) const
float к_float(bool *ok = nullptr) const
QString к_Html_экранированному() const
int к_int(bool *ok = nullptr, int base = 10) const
QByteArray к_Latin1() const
QByteArray к_Local8Bit() const
long к_long(bool *ok = nullptr, int base = 10) const
qlonglong к_longLong(bool *ok = nullptr, int base = 10) const
QString к_нижнему_регистру() const
NSString * к_NSString() const
short к_short(bool *ok = nullptr, int base = 10) const
std::string к_std_string() const
std::u16string к_std_u16string() const
std::u32string к_std_u32string() const
std::wstring к_std_wstring() const
uint к_uint(bool *ok = nullptr, int base = 10) const
ulong к_ulong(bool *ok = nullptr, int base = 10) const
qulonglong к_ulongLong(bool *ok = nullptr, int base = 10) const
ushort к_ushort(bool *ok = nullptr, int base = 10) const
QList<uint> к_Ucs4() const
QString к_верхнему_регистру() const
QByteArray к_Utf8() const
qsizetype к_WCharArray(wchar_t *array) const
decltype(qTokenize(*this, std::forward<Needle>(needle), flags...)) разбить(Needle &&sep, Flags... flags) const &
decltype(qTokenize(std::move(*this), std::forward<Needle>(needle), flags...)) разбить(Needle &&sep, Flags... flags) &&
QString обрезанный() const
void обрезать(qsizetype position)
const QChar * юникод() const
const ushort * utf16() const
bool не равно(const char *other) const
bool не равно(const QByteArray &other) const
QString & +=(const QString &other)
QString & +=(QChar ch)
QString & +=(QStringView str)
QString & +=(QLatin1String str)
QString & +=(const char *str)
QString & +=(const QByteArray &ba)
bool меньше(const char *other) const
bool меньше(const QByteArray &other) const
bool меньше_или_равно(const char *other) const
bool меньше_или_равно(const QByteArray &other) const
QString & =(QChar ch)
QString & =(QLatin1String str)
QString & =(const char *str)
bool равно(const char *other) const
bool operator==(const QByteArray &other) const
bool operator>(const char *other) const
bool operator>(const QByteArray &other) const
bool operator>=(const char *other) const
bool operator>=(const QByteArray &other) const
QChar & operator[](qsizetype position)
const QChar operator[](qsizetype position) const

Статические публичные члены

QString asprintf(const char *cformat, ...)
int compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
int compare(const QString &s1, QLatin1String s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
int compare(QLatin1String s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
int compare(const QString &s1, QStringView s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
int compare(QStringView s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString fromCFString(CFStringRef string)
QString fromLatin1(const char *str, qsizetype size)
QString fromLatin1(QByteArrayView str)
QString fromLatin1(const QByteArray &str)
QString fromLocal8Bit(const char *str, qsizetype size)
QString fromLocal8Bit(QByteArrayView str)
QString fromLocal8Bit(const QByteArray &str)
QString fromNSString(const NSString *string)
QString fromRawData(const QChar *unicode, qsizetype size)
QString fromStdString(const std::string &str)
QString fromStdU16String(const std::u16string &str)
QString fromStdU32String(const std::u32string &str)
QString fromStdWString(const std::wstring &str)
QString fromUcs4(const char32_t *unicode, qsizetype size = -1)
QString fromUtf8(const char *str, qsizetype size)
QString fromUtf8(QByteArrayView str)
QString fromUtf8(const QByteArray &str)
QString fromUtf8(const char8_t *str)
QString fromUtf8(const char8_t *str, qsizetype size)
QString fromUtf16(const char16_t *unicode, qsizetype size = -1)
QString fromWCharArray(const wchar_t *string, qsizetype size = -1)
int localeAwareCompare(const QString &s1, const QString &s2)
int localeAwareCompare(QStringView s1, QStringView s2)
QString number(long n, int base = 10)
QString number(int n, int base = 10)
QString number(uint n, int base = 10)
QString number(ulong n, int base = 10)
QString number(qlonglong n, int base = 10)
QString number(qulonglong n, int base = 10)
QString number(double n, char format = 'g', int precision = 6)
QString vasprintf(const char *cformat, va_list ap)

Связанные нечлены

qsizetype erase(QString &s, const T &t)
qsizetype erase_if(QString &s, Predicate pred)
bool operator!=(const QString &s1, const QString &s2)
bool operator!=(const QString &s1, QLatin1String s2)
bool operator!=(const char *s1, const QString &s2)
const QString operator+(const QString &s1, const QString &s2)
const QString operator+(const QString &s1, const char *s2)
const QString operator+(const char *s1, const QString &s2)
bool operator<(const QString &s1, const QString &s2)
bool operator<(const QString &s1, QLatin1String s2)
bool operator<(QLatin1String s1, const QString &s2)
bool operator<(const char *s1, const QString &s2)
QDataStream & operator<<(QDataStream &stream, const QString &string)
bool operator<=(const QString &s1, const QString &s2)
bool operator<=(const QString &s1, QLatin1String s2)
bool operator<=(QLatin1String s1, const QString &s2)
bool operator<=(const char *s1, const QString &s2)
bool operator==(const QString &s1, const QString &s2)
bool operator==(const QString &s1, QLatin1String s2)
bool operator==(QLatin1String s1, const QString &s2)
bool operator==(const char *s1, const QString &s2)
bool operator>(const QString &s1, const QString &s2)
bool operator>(const QString &s1, QLatin1String s2)
bool operator>(QLatin1String s1, const QString &s2)
bool operator>(const char *s1, const QString &s2)
bool operator>=(const QString &s1, const QString &s2)
bool operator>=(const QString &s1, QLatin1String s2)
bool operator>=(QLatin1String s1, const QString &s2)
bool operator>=(const char *s1, const QString &s2)
QDataStream & operator>>(QDataStream &stream, QString &string)

Макросы

QStringLiteral(str)
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
QT_RESTRICTED_CAST_FROM_ASCII

Подробное описание

QString хранит строку из 16-битных QChar, где каждый QChar соответствует одному UTF-16 кодовому элементу. (Символы Юникода с кодовыми значениями выше 65535 хранятся с использованием пар суррогатов, т.е. двумя последовательными QChar.)

Юникод — это международный стандарт, поддерживающий большинство современных систем письменности. Он является надмножеством US-ASCII (ANSI X3.4-1986) и Latin-1 (ISO 8859-1), и все символы US-ASCII/Latin-1 доступны на тех же позициях кодов.

Внутри QString используется неявное совместное использование (copy-on-write), чтобы уменьшить использование памяти и избежать ненужного копирования данных. Это также помогает уменьшить издержки, связанные с хранением 16-битных символов вместо 8-битных.

Помимо QString, Qt также предоставляет класс QByteArray для хранения сырых байтов и традиционных 8-битных строк, завершающихся символом '\0'. Для большинства целей класс QString — тот, который вы хотите использовать. Он используется во всей API Qt, а поддержка Юникода гарантирует, что ваши приложения будут легко переводиться, если вы хотите расширить рынок своего приложения в какой-то момент. Два основных случая, когда QByteArray подходит, — это когда вам нужно хранить сырые двоичные данные и когда критично экономия памяти (например, в встроенных системах).

Инициализация строки

Один из способов инициализации QString — просто передать const char * в его конструктор. Например, следующий код создаёт QString размером 5, содержащий данные "Hello":

QString str = "Hello";

QString преобразует const char * данные в Юникод, используя функцию fromUtf8().

Во всех функциях QString, принимающих const char * параметры, const char * интерпретируется как классическая строка C-стиля, завершающаяся символом '\0', закодированная в UTF-8. Допустимо, чтобы const char * параметр был nullptr.

Вы также можете предоставить данные строки как массив QChar:

static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
QString str(data, 4);

QString создаёт глубокую копию данных QChar, поэтому вы можете изменить её позже без побочных эффектов. (Если по причинам производительности вы не хотите создавать глубокую копию данных символов, используйте QString::fromRawData() вместо этого.)

Ещё один подход — задать размер строки, используя resize(), и инициализировать данные символ за символом. QString использует индексы с нуля, как и массивы C++. Для доступа к символу по определённому индексу можно использовать operator[](). Для не-const строк operator[]() возвращает ссылку на символ, которую можно использовать в левой части присваивания. Например:

QString str;
str.resize(4);

str[0] = QChar('U');
str[1] = QChar('n');
str[2] = QChar(0x10e3);
str[3] = QChar(0x03a3);

Для чтения без записи альтернативный синтаксис — использовать функцию at():

QString str;

for (qsizetype i = 0; i < str.size(); ++i) {
    if (str.at(i) >= QChar('a') && str.at(i) <= QChar('f'))
        qDebug() << "Found character in range [a-f]";
}

Функция at() может быть быстрее, чем operator[](), поскольку она никогда не вызывает глубокую копию. В качестве альтернативы, используйте функции first(), last() или sliced() для извлечения нескольких символов за один раз.

QString может содержать символы '\0' (QChar::Null). Функция size() всегда возвращает размер всей строки, включая вложенные символы '\0'.

После вызова функции resize() значения вновь выделенных символов не определены. Чтобы установить все символы в строке на определённое значение, используйте функцию fill().

QString предоставляет десятки перегрузок, предназначенных для упрощения использования строк. Например, если вы хотите сравнить QString со строковым литералом, вы можете написать код так, и он будет работать как ожидается:

QString str;

if (str == "auto" || str == "extern"
        || str == "static" || str == "register") {
    // ...
}

Вы также можете передать строковые литералы в функции, принимающие QStrings в качестве аргументов, вызвав конструктор QString(const char *). Аналогично, вы можете передать QString в функцию, принимающую аргумент const char *, используя макрос qPrintable(), который возвращает заданный QString в качестве const char *. Это эквивалентно вызову <QString>.toLocal8Bit().constData().

Обработка данных строк

QString предоставляет следующие основные функции для изменения данных символов: append(), prepend(), insert(), replace() и remove(). Например:

QString str = "and";
str.prepend("rock ");     // str == "rock and"
str.append(" roll");        // str == "rock and roll"
str.replace(5, 3, "&");   // str == "rock & roll"

В приведённом выше примере первые два аргумента функции replace() — это позиция, с которой следует начать замену, и количество символов, которые следует заменить.

Когда функции, изменяющие данные, увеличивают размер строки, они могут привести к перераспределению памяти для объекта QString. В этом случае QString расширяется больше, чем это необходимо в данный момент, чтобы обеспечить место для дальнейшего расширения без перераспределения, пока размер строки значительно не увеличится.

Функции insert(), remove() и, при замене подстроки на подстроку другого размера, replace() могут быть медленными (в линейное время) для больших строк, поскольку они требуют перемещения многих символов в строке по крайней мере на одну позицию в памяти.

Если вы постепенно создаёте QString и заранее примерно знаете, сколько символов он будет содержать, вы можете вызвать reserve(), попросив QString предварительно выделить определённое количество памяти. Вы также можете вызвать capacity(), чтобы узнать, сколько памяти фактически выделено для QString.

QString предоставляет итераторы в стиле STL (QString::const_iterator и QString::iterator). На практике итераторы удобны при работе с универсальными алгоритмами, предоставляемыми стандартной библиотекой C++.

Примечание: Итераторы над QString и ссылки на отдельные символы в нём не могут гарантировать сохранение своей корректности после вызова любой не-const функции QString. Доступ к такому итератору или ссылке после вызова не-const функции приводит к неопределённому поведению. Если требуется стабильность для функциональности типа итераторов, вы должны использовать индексы вместо итераторов, так как они не связаны с внутренним состоянием QString и, следовательно, не становятся некорректными.

Примечание: Из-за неявного совместного использования первый оператор или функция, используемые над заданным QString, могут заставить его внутренне выполнить глубокую копию своих данных. Это делает все итераторы над строкой и ссылки на отдельные символы в ней некорректными. После первого не-const оператора операции, изменяющие QString, могут полностью (в случае перераспределения) или частично сделать итераторы и ссылки некорректными, но другие методы (такие как begin() или end()) этого не сделают. Доступ к итератору или ссылке после того, как они стали некорректными, приводит к неопределённому поведению.

Частая потребность заключается в удалении символов пробела из строки ('\n', '\t', ' ', и т. д.). Если вы хотите удалить пробелы с обеих концов QString, используйте функцию trimmed(). Если вы хотите удалить пробелы с обеих концов и заменить несколько последовательных пробелов одним пробелом в строке, используйте simplified().

Если вы хотите найти все вхождения определённого символа или подстроки в QString, используйте функции indexOf() или lastIndexOf(). Первая ищет вперёд, начиная с заданной позиции индекса, вторая — назад. Обе возвращают позицию индекса символа или подстроки, если находят; в противном случае возвращают -1. Например, вот типичный цикл, который находит все вхождения определённой подстроки:

QString str = "We must be <b>bold</b>, very <b>bold</b>";
qsizetype j = 0;

while ((j = str.indexOf("<b>", j)) != -1) {
    qDebug() << "Found <b> tag at index position" << j;
    ++j;
}

QString предоставляет множество функций для преобразования чисел в строки и строк в числа. См. функции arg(), функции setNum(), статические функции number() и функции toInt(), toDouble() и аналогичные.

Чтобы получить версию строки в верхнем или нижнем регистре, используйте toUpper() или toLower().

Список строк обрабатывается классом QStringList. Вы можете разделить строку на список строк, используя функцию split(), и объединить список строк в одну строку с необязательным разделителем, используя QStringList::join(). Вы можете получить список строк из списка строк, содержащих определённую подстроку или соответствующих определённому QRegularExpression, используя функцию QStringList::filter().

Проверка данных строк

Если вы хотите проверить, начинается ли QString или заканчивается ли он определённой подстрокой, используйте startsWith() или endsWith(). Если вы просто хотите проверить, содержит ли QString определённый символ или подстроку, используйте функцию contains(). Если вы хотите узнать, сколько раз определённый символ или подстрока встречаются в строке, используйте count().

Чтобы получить указатель на фактические данные символов, вызовите data() или constData(). Эти функции возвращают указатель на начало данных QChar. Указатель гарантированно остаётся корректным до тех пор, пока не вызвана не-const функция на QString.

Сравнение строк

QStrings могут быть сравнены с помощью перегруженных операторов, таких как operator<(), operator<=(), operator==(), operator>=() и т. д. Обратите внимание, что сравнение основано исключительно на числовых значениях Unicode символов. Оно очень быстрое, но не соответствует тому, что ожидал бы человек; функция QString::localeAwareCompare() обычно является лучшим выбором для сортировки строк пользовательского интерфейса, когда такое сравнение доступно.

В системах Unix (включая Linux, macOS и iOS), когда Qt связан с библиотекой ICU (что обычно и происходит), используется её локально-ориентированное сортирование. В противном случае, на macOS и iOS функция localeAwareCompare() сравнивает строки в соответствии с настройкой «Порядок для отсортированных списков» в панели «Международные настройки». В других системах Unix без ICU сравнение использует базовый strcoll() системной библиотеки.

Преобразование между кодированными данными строк и QString

QString предоставляет следующие три функции, которые возвращают const char * версию строки в виде QByteArray: toUtf8(), toLatin1() и toLocal8Bit().

  • toLatin1() возвращает 8-битную строку с кодировкой Latin-1 (ISO 8859-1).
  • toUtf8() возвращает 8-битную строку с кодировкой UTF-8. UTF-8 — это супермножество US-ASCII (ANSI X3.4-1986), которое поддерживает весь набор символов Unicode с помощью многобайтовых последовательностей.
  • toLocal8Bit() возвращает 8-битную строку, используя локальную кодировку системы. Это то же самое, что toUtf8() в системах Unix.

Для преобразования из одной из этих кодировок QString предоставляет fromLatin1(), fromUtf8() и fromLocal8Bit(). Другие кодировки поддерживаются классами QStringEncoder и QStringDecoder.

Как упоминалось выше, QString предоставляет множество функций и операторов, которые облегчают взаимодействие со строками const char *. Но эта функциональность — это двойной меч: она делает QString удобнее в использовании, если все строки — US-ASCII или Latin-1, но всегда существует риск, что неявное преобразование из или в const char * выполняется с использованием неправильной 8-битной кодировки. Чтобы свести эти риски к минимуму, вы можете отключить эти неявные преобразования, определив некоторые из следующих препроцессорных символов:

  • QT_NO_CAST_FROM_ASCII отключает автоматические преобразования из строковых литералов C и указателей на Unicode.
  • QT_RESTRICTED_CAST_FROM_ASCII разрешает автоматические преобразования из символов C и массивов символов, но отключает автоматические преобразования из указателей на символы в Unicode.
  • QT_NO_CAST_TO_ASCII отключает автоматическое преобразование из QString в строки C.

Затем вам нужно явно вызвать fromUtf8(), fromLatin1() или fromLocal8Bit() для создания QString из 8-битной строки или использовать лёгкий класс QLatin1String, например:

QString url = QLatin1String("http://www.unicode.org/");

Аналогично, вы должны явно вызвать toLatin1(), toUtf8() или toLocal8Bit() для преобразования QString в 8-битную строку.

Примечание для программистов C
Из-за системы типов C++ и того факта, что QString является неявно разделяемым, QStrings могут обрабатываться как int или другие базовые типы. Например:
QString Widget::boolToString(bool b)
{
    QString result;
    if (b)
        result = "True";
    else
        result = "False";
    return result;
}

Переменная result, является обычной переменной, выделенной в стеке. Когда вызывается return, и поскольку мы возвращаем значение, вызывается конструктор копирования, и возвращается копия строки. Фактическая копия не происходит благодаря неявному совместному использованию.

Различие между нулевой и пустой строками

По историческим причинам QString различает нулевую строку и пустую строку. Нулевая строка — это строка, которая инициализируется с помощью конструктора по умолчанию QString или путём передачи (const char *)0 в конструктор. Пустая строка — это любая строка с размером 0. Нулевая строка всегда пустая, но пустая строка не обязательно нулевая:

QString().isNull();               // returns true
QString().isEmpty();              // returns true

QString("").isNull();             // returns false
QString("").isEmpty();            // returns true

QString("abc").isNull();          // returns false
QString("abc").isEmpty();         // returns false

Все функции, кроме isNull() обрабатывают пустые строки так же, как и пустые строки. Например, toUtf8().constData() возвращает допустимый указатель (не nullptr) на символ '\0' для пустой строки. Рекомендуется всегда использовать функцию isEmpty() и избегать isNull().

Форматы аргументов

В методах-членах, где можно указать аргумент формат (например, arg(), number()), аргумент формат может быть одним из следующих:

Формат Значение
e формат как [-]9.9e[+|-]999
E формат как [-]9.9E[+|-]999
f формат как [-]9.9
g использовать формат e или f, какой из них более компактен
G использовать формат E или f, какой из них более компактен

Точность также указывается с помощью аргумента формат. Для форматов 'e', 'E' и 'f', точность представляет количество цифр после десятичной точки. Для форматов 'g' и 'G', точность представляет максимальное количество значащих цифр (завершающие нули опускаются).

Более эффективный способ создания строк

Многие строки известны во время компиляции. Но тривиальный конструктор QString("Hello") скопирует содержимое строки, рассматривая его как Latin-1. Чтобы избежать этого, можно использовать макрос QStringLiteral, чтобы напрямую создать необходимые данные во время компиляции. При создании QString из литерала не происходит дополнительной нагрузки во время выполнения.

Несколько менее эффективным способом является использование QLatin1String. Этот класс оборачивает C-строковый литерал, предварительно вычисляет его длину во время компиляции и может использоваться для более быстрого сравнения с QStrings и преобразования в QStrings, чем обычный C-строковый литерал.

Используя оператор QString '+', легко создать сложную строку из нескольких подстрок. Вы часто будете писать код такого вида:

    QString foo;
    QString type = "long";

    foo = QLatin1String("vector<") + type + QLatin1String(">::iterator");

    if (foo.startsWith("(" + type + ") 0x"))
        ...

В этих способах создания строк нет ничего плохого, но есть несколько скрытых недостатков производительности. Начиная с Qt 4.6, их можно устранить.

Во-первых, многократное использование оператора '+' обычно означает несколько выделений памяти. При конкатенации n подстрок, где n > 2, может быть до n - 1 вызовов выделения памяти.

В 4.6 был добавлен внутренний шаблонный класс QStringBuilder вместе с несколькими вспомогательными функциями. Этот класс помечен как внутренний и не отображается в документации, так как вы не должны создавать его в своём коде. Его использование будет автоматическим, как описано ниже. Класс находится в src/corelib/tools/qstringbuilder.cpp, если вы хотите его изучить.

QStringBuilder использует шаблоны выражений и переопределяет оператор '%' так, что при использовании '%' для конкатенации строк вместо '+', конкатенация нескольких подстрок откладывается до тех пор, пока окончательный результат не будет присвоен QString. В этот момент размер памяти, необходимый для окончательного результата, известен. Затем выделение памяти вызывается один раз для получения требуемого места, и подстроки копируются в него по одной.

Дополнительная эффективность достигается за счёт инлайнинга и уменьшения количества ссылок (QString, созданный из QStringBuilder, как правило, имеет счётчик ссылок 1, в то время как QString::append() требует дополнительной проверки).

Есть два способа доступа к этому улучшенному методу создания строк. Простой способ заключается в включении QStringBuilder везде, где нужно использовать его, и использовании оператора '%' вместо '+' при конкатенации строк:

    #include <QStringBuilder>

    QString hello("hello");
    QStringView el = QStringView{ hello }.mid(2, 3);
    QLatin1String world("world");
    QString message =  hello % el % world % QChar('!');

Более глобальный подход, который является наиболее удобным, но не полностью совместимым с исходным кодом, заключается в определении в файле .pro:

    DEFINES *= QT_USE_QSTRINGBUILDER

и '+' будет автоматически применено как QStringBuilder '%' везде.

Максимальный размер и условия недостатка памяти

Максимальный размер QString зависит от архитектуры. Большинство 64-битных систем могут выделять более 2 ГБ памяти, с типичным ограничением в 2^63 байта. Фактическое значение также зависит от накладных расходов, необходимых для управления блоком данных. В результате, вы можете ожидать максимальный размер в 2 ГБ минус накладные расходы на 32-битных платформах и 2^63 байта минус накладные расходы на 64-битных платформах. Количество элементов, которые можно хранить в QString, равно максимальному размеру, делённому на размер QChar.

При неудачном выделении памяти QString выбрасывает исключение std::bad_alloc если приложение было скомпилировано с поддержкой исключений. Условия недостатка памяти в контейнерах Qt — единственный случай, когда Qt будет выбрасывать исключения. Если исключения отключены, поведение при отсутствии памяти не определено.

Обратите внимание, что операционная система может накладывать дополнительные ограничения на приложения, удерживающие много выделенной памяти, особенно на большие, непрерывные блоки. Такие соображения, конфигурация такого поведения или любые методы смягчения лежат за пределами области применения API Qt.

См. также fromRawData(), QChar, QStringView, QLatin1String и QByteArray.

Документация по типам членов

QString::ConstIterator

Синоним Qt-стиля для QString::const_iterator.

QString::Iterator

Синоним Qt-стиля для QString::iterator.

enum QString::NormalizationForm

Этот перечисление описывает различные нормализованные формы текста Юникода.

Константа Значение Описание
QString::NormalizationForm_D 0 Каноническое разложение
QString::NormalizationForm_C 1 Каноническое разложение, за которым следует каноническое объединение
QString::NormalizationForm_KD 2 Разложение совместимости
QString::NormalizationForm_KC 3 Разложение совместимости, за которым следует каноническое объединение

См. также normalized() и Приложения к стандарту Юникода №15.

enum QString::SectionFlagflags QString::SectionFlags

Это перечисление определяет флаги, которые могут использоваться для изменения различных аспектов поведения функции section() в отношении разделителей и пустых полей.

Константа Значение Описание
QString::SectionDefault 0x00 Пустые поля учитываются, ведущие и заключительные разделители не включаются, и разделитель сравнивается чувствительно к регистру.
QString::SectionSkipEmpty 0x01 Пустые поля обрабатываются как несуществующие, то есть они не учитываются с точки зрения start и end.
QString::SectionIncludeLeadingSep 0x02 Включать ведущий разделитель (если есть) в результирующую строку.
QString::SectionIncludeTrailingSep 0x04 Включать заключительный разделитель (если есть) в результирующую строку.
QString::SectionCaseInsensitiveSeps 0x08 Сравнивать разделитель без учёта регистра.

Тип SectionFlags — это псевдоним для QFlags<SectionFlag>. Он хранит результат побитового ИЛИ для значений SectionFlag.

См. также section().

QString::const_iterator

См. также QString::iterator.

QString::const_pointer

Тип QString::const_pointer предоставляет указатель const STL-стиля на элемент QString (QChar).

QString::const_reference

[since 5.6] QString::const_reverse_iterator

Этот тип данных был введён в Qt 5.6.

См. также QString::reverse_iterator и QString::const_iterator.

QString::difference_type

QString::iterator

См. также QString::const_iterator.

QString::pointer

Тип QString::pointer предоставляет указатель STL-стиля на элемент QString (QChar).

QString::reference

[since 5.6] QString::reverse_iterator

Этот тип данных был введён в Qt 5.6.

См. также QString::const_reverse_iterator и QString::iterator.

QString::size_type

QString::value_type

Документация по методам-членам

template <typename Needle, typename Flags> decltype(qTokenize(std::move(*this), std::forward<Needle>(needle), flags...)) QString::tokenize(Needle &&sep, Flags... flags) &&

template <typename Needle, typename Flags> decltype(qTokenize(*this, std::forward<Needle>(needle), flags...)) QString::tokenize(Needle &&sep, Flags... flags) const &

template <typename Needle, typename Flags> decltype(qTokenize(*this, std::forward<Needle>(needle), flags...)) QString::tokenize(Needle &&sep, Flags... flags) const &

Разделяет строку на подстроки в местах, где встречается sep, и возвращает ленивую последовательность этих строк.

Эквивалентно

return QStringTokenizer{std::forward<Needle>(sep), flags...};

кроме того, что работает без включенной в компиляторе поддержки C++17 Class Template Argument Deduction (CTAD).

См. QStringTokenizer, чтобы узнать, как sep и flags взаимодействуют, чтобы сформировать результат.

Примечание: Хотя эта функция возвращает QStringTokenizer, вы никогда не должны явно указывать её шаблонные аргументы. Если вы можете использовать C++17 Class Template Argument Deduction (CTAD), вы можете написать

QStringTokenizer result = sv.tokenize(sep);

(без шаблонных аргументов). Если вы не можете использовать C++17 CTAD, вы должны хранить возвращаемое значение только в auto переменных:

auto result = sv.tokenize(sep);

Это связано с тем, что шаблоновые аргументы QStringTokenizer имеют очень тонкое зависимость от конкретной перегрузки tokenize() функции, от которой они возвращаются, и они обычно не соответствуют типу, используемому для разделителя.

Эта функция была добавлена в Qt 6.0.

См. также QStringTokenizer и qTokenize().

template <typename Args> QString QString::arg(Args &&... args) const

Заменяет вхождения %N в этой строке соответствующим аргументом из args. Аргументы не являются позиционными: первый из args заменяет %N с наименьшим N (из всех), второй из args заменяет %N с последующим наименьшим N и так далее.

Args может содержать что угодно, что неявно преобразуется в QString, QStringView или QLatin1String.

Кроме того, также поддерживаются следующие типы: QChar, QLatin1Char.

Эта функция была добавлена в Qt 5.14.

См. также QString::arg().

QString::QString(const QByteArray &ba)

Конструирует строку, инициализированную байтовым массивом ba. Указанный байтовый массив преобразуется в Unicode с помощью fromUtf8(). Остановка копирования происходит по достижении первого символа 0, в противном случае копируется весь байтовый массив.

Вы можете отключить этот конструктор, определив QT_NO_CAST_FROM_ASCII при компиляции своих приложений. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

См. также fromLatin1(), fromLocal8Bit() и fromUtf8().

QString::QString(const char *str)

Конструирует строку, инициализированную 8-битной строкой str. Указанный указатель const char преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить этот конструктор, определив QT_NO_CAST_FROM_ASCII при компиляции своих приложений. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

Примечание: Определение QT_RESTRICTED_CAST_FROM_ASCII также отключает этот конструктор, но вместо него включает QString(const char (&ch)[N]) конструктор. Использование нелитеральных входных данных или входных данных с встраиваемыми символами NUL или символами, не являющимися 7-битными, в этом случае неопределено.

См. также fromLatin1(), fromLocal8Bit() и fromUtf8().

[since 5.2] QString::QString(QString &&other)

Конструирует QString, ссылаясь на тот же объект, на который ссылается other.

Эта функция была добавлена в Qt 5.2.

QString::QString(const QString &other)

Конструирует копию other.

Эта операция занимает постоянное время, потому что QString использует неявное совместное использование. Это делает возврат QString из функции очень быстрым. Если изменён экземпляр, использующий совместное использование, он будет скопирован (copy-on-write), что занимает линейное время.

См. также operator=().

[since 6.1] template <typename> QString::QString(const char8_t *str)

Конструирует строку, инициализированную UTF-8 строкой str. Указанный указатель const char8_t преобразуется в Unicode с помощью функции fromUtf8().

Эта функция была добавлена в Qt 6.1.

См. также fromLatin1(), fromLocal8Bit() и fromUtf8().

QString::QString(QLatin1String str)

Конструирует копию латинской строки str.

См. также fromLatin1().

QString::QString(qsizetype size, QChar ch)

Конструирует строку заданного размера size, где каждый символ равен ch.

См. также fill().

QString::QString(QChar ch)

Конструирует строку размером 1, содержащую символ ch.

QString::QString(const QChar *unicode, qsizetype size = -1)

Конструирует строку, инициализированную первыми size символами массива QChar unicode.

Если unicode равен 0, создаётся пустая строка.

Если size отрицательно, предполагается, что unicode указывает на массив, завершённый символом '\0', и его длина определяется динамически. Завершающий символ null не считается частью строки.

QString создаёт глубокую копию данных строки. Данные unicode копируются как есть, а маркер порядка байтов сохраняется, если он присутствует.

См. также fromRawData().

QString::QString()

Конструирует пустую строку. Пустые строки также являются нулевыми.

См. также isEmpty().

QString &QString::operator=(const QByteArray &ba)

Перегрузка оператора присваивания =.

Присваивает ba этой строке. Байтовый массив преобразуется в Unicode с помощью функции fromUtf8(). Конвертация прекращается при первом найденном символе NUL или при достижении конца байтового массива ba.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции своих приложений. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

[since 5.2] QString &QString::operator=(QString &&other)

Перемещающее присваивание other этому экземпляру QString.

Эта функция была добавлена в Qt 5.2.

QString &QString::operator=(const QString &other)

Присваивает other этой строке и возвращает ссылку на эту строку.

QString::~QString()

Уничтожает строку.

QString &QString::append(const QString &str)

Добавляет строку str в конец этой строки.

Пример:

QString x = "free";
QString y = "dom";

x.append(y);
// x == "freedom"

Это то же самое, что использовать функцию insert:

x.insert(x.size(), y);

Функция append() обычно очень быстрая (постоянное время), потому что QString предварительно выделяет дополнительное место в конце данных строки, чтобы она могла расти без перераспределения всей строки каждый раз.

См. также operator+=(), prepend() и insert().

QString &QString::append(QChar ch)

Эта функция перегружает append().

Добавляет символ ch к этой строке.

[since 5.0] QString &QString::append(const QChar *str, qsizetype len)

Эта функция перегружает append().

Добавляет len символов из массива QChar str к этой строке.

Эта функция была добавлена в Qt 5.0.

QString &QString::append(QLatin1String str)

Эта функция перегружает append().

Добавляет строку Latin-1 str к этой строке.

QString &QString::append(const char *str)

Эта функция перегружает append().

Добавляет строку str к этой строке. Указанный указатель const char преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить эту функцию, определив QT_NO_CAST_FROM_ASCII при компиляции ваших приложений. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

QString &QString::append(const QByteArray &ba)

Эта функция перегружает append().

Добавляет массив байтов ba к этой строке. Указанный массив байтов преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить эту функцию, определив QT_NO_CAST_FROM_ASCII при компиляции ваших приложений. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

QString QString::arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

Возвращает копию этой строки с заменой маркера с наименьшим номером на строку a, т.е., %1, %2, ..., %99.

fieldWidth задаёт минимальное количество места, которое должна занимать строка a. Если a требует меньше места, чем fieldWidth, она дополняется символом fillChar до fieldWidth. Положительное значение fieldWidth выравнивает текст вправо. Отрицательное значение fieldWidth выравнивает текст влево.

В этом примере показано, как мы можем создать строку для отображения прогресса обработки списка файлов:

QString i;           // current file's number
QString total;       // number of files to process
QString fileName;    // current file's name

QString status = QString("Processing file %1 of %2: %3")
                .arg(i).arg(total).arg(fileName);

Вначале arg(i) заменяет %1. Затем arg(total) заменяет %2. Наконец, arg(fileName) заменяет %3.

Одно из преимуществ использования arg() перед asprintf() заключается в том, что порядок числовых маркеров может меняться при переводе строк приложения на другие языки, но каждая arg() всё равно будет заменять маркер с наименьшим номером, независимо от его положения. Кроме того, если маркер %i встречается в строке более одного раза, arg() заменит все вхождения.

Если не осталось ни одного незамещённого маркера, выводится сообщение об ошибке, а результат неопределён. Номера маркеров должны быть в диапазоне от 1 до 99.

QString QString::arg(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

fieldWidth задаёт минимальное количество места, занимаемое значением a, и заполняется символом fillChar. Положительное значение выравнивает текст вправо; отрицательное — влево.

Аргумент base определяет систему счисления для преобразования целого числа a в строку. Система счисления должна быть в диапазоне от 2 до 36, при этом 8 даёт восьмеричные, 10 — десятичные, а 16 — шестнадцатеричные числа.

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

fieldWidth задаёт минимальное количество места, занимаемое значением a, и заполняется символом fillChar. Положительное значение выравнивает текст вправо; отрицательное — влево.

Аргумент base определяет систему счисления для преобразования целого числа a в строку. Система счисления должна быть в диапазоне от 2 до 36, при этом 8 даёт восьмеричные, 10 — десятичные, а 16 — шестнадцатеричные числа.

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

fieldWidth задаёт минимальное количество места, занимаемое значением a, и заполняется символом fillChar. Положительное значение выравнивает текст вправо; отрицательное — влево.

Аргумент a выражен в заданной системе счисления base, по умолчанию 10, и должен быть в диапазоне от 2 до 36.

Символ '%' может быть после 'L', в этом случае последовательность заменяется локализованным представлением a. Преобразование использует текущую локаль. Текущая локаль определяется настройками локали системы при запуске приложения. Она может быть изменена с помощью QLocale::setDefault(). Флаг 'L' игнорируется, если base не равно 10.

QString str;
str = QString("Decimal 63 is %1 in hexadecimal")
        .arg(63, 0, 16);
// str == "Decimal 63 is 3f in hexadecimal"

QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
str = QString("%1 %L2 %L3")
        .arg(12345)
        .arg(12345)
        .arg(12345, 0, 16);
// str == "12345 12,345 3039"

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

fieldWidth задаёт минимальное количество места, занимаемое значением a, и заполняется символом fillChar. Положительное значение выравнивает текст вправо; отрицательное — влево.

Аргумент base определяет систему счисления для преобразования целого числа a в строку. Система счисления должна быть в диапазоне от 2 до 36, при этом 8 даёт восьмеричные, 10 — десятичные, а 16 — шестнадцатеричные числа.

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

Аргумент a выражен в системе счисления base, по умолчанию 10, и должен быть в диапазоне от 2 до 36. Для систем счисления, отличных от 10, a рассматривается как беззнаковое целое число.

fieldWidth задаёт минимальное количество места, занимаемое значением a, и заполняется символом fillChar. Положительное значение выравнивает текст вправо; отрицательное — влево.

Символ '%' может быть после 'L', в этом случае последовательность заменяется локализованным представлением a. Преобразование использует текущую локаль, установленную с помощью QLocale::setDefault(). Если текущая локаль не была указана, используется локаль "C". Флаг 'L' игнорируется, если base не равно 10.

QString str;
str = QString("Decimal 63 is %1 in hexadecimal")
        .arg(63, 0, 16);
// str == "Decimal 63 is 3f in hexadecimal"

QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
str = QString("%1 %L2 %L3")
        .arg(12345)
        .arg(12345)
        .arg(12345, 0, 16);
// str == "12345 12,345 3039"

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

Аргумент base определяет систему счисления для преобразования целого числа a в строку. Система счисления должна быть в диапазоне от 2 до 36.

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(short a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

fieldWidth задаёт минимальное количество места, занимаемое значением a, и заполняется символом fillChar. Положительное значение выравнивает текст вправо; отрицательное — влево.

Аргумент base определяет систему счисления для преобразования целого числа a в строку. Система счисления должна быть в диапазоне от 2 до 36, при этом 8 даёт восьмеричные, 10 — десятичные, а 16 — шестнадцатеричные числа.

Если fillChar равняется '0', используется нуль из текущего региона. Для отрицательных чисел нули могут появляться перед знаком минус.

QString QString::arg(ushort a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

fieldWidth задаёт минимальное количество символов, до которого a дополняется символом fillChar. Положительное значение создаёт текст, выровненный по правому краю; отрицательное значение — по левому.

Аргумент base задаёт систему счисления, используемую при преобразовании целого числа a в строку. Система счисления должна быть в диапазоне от 2 до 36, при этом 8 даёт восьмеричные, 10 — десятичные и 16 — шестнадцатеричные числа.

Если fillChar равно '0' (число 0, ASCII 48), используется нуль текущего языка. Для отрицательных чисел нулевое заполнение может появиться перед знаком минус.

QString QString::arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

Аргумент a форматируется в соответствии с заданными format и precision. Подробности см. в разделе Форматы аргументов.

fieldWidth задаёт минимальное количество символов, до которого a дополняется символом fillChar. Положительное значение создаёт текст, выровненный по правому краю; отрицательное значение — по левому.

Символ '%' может быть после 'L', в этом случае последовательность заменяется локализованным представлением a. Преобразование использует локаль по умолчанию, установленную с помощью QLocale::setDefault(). Если локаль по умолчанию не была указана, используется локаль "C".

Если fillChar равно '0' (число 0, ASCII 48), функция будет использовать нуль текущего языка для дополнения. Для отрицательных чисел нулевое дополнение, вероятно, появится перед знаком минус.

См. также QLocale::toString().

QString QString::arg(char a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

Аргумент a интерпретируется как символ Latin-1.

QString QString::arg(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

Эта функция перегружает arg().

QString QString::arg(QStringView a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

Это перегруженная функция.

Возвращает копию этой строки, в которой маркер с наименьшим номером заменён строкой a, т.е., %1, %2, ..., %99.

fieldWidth задаёт минимальное количество символов, которое должно занимать a. Если a занимает меньше места, чем fieldWidth, она дополняется символом fillChar. Положительное значение fieldWidth создаёт текст, выровненный по правому краю. Отрицательное значение fieldWidth создаёт текст, выровненный по левому краю.

В этом примере показано, как мы можем создать строку status для отчёта о ходе обработки списка файлов:

Вначале arg(i) заменяет %1. Затем arg(total) заменяет %2. Наконец, arg(fileName) заменяет %3.

Одно из преимуществ использования arg() по сравнению с asprintf() состоит в том, что порядок числовых маркеров может измениться, если строки приложения переведены на другие языки, но каждый вызов arg() всё равно заменит маркер с наименьшим номером, независимо от его местоположения. Кроме того, если маркер %i встречается в строке более одного раза, arg() заменяет все такие маркеры.

Если оставшихся не заменённых маркеров нет, выводится сообщение об ошибке, и результат неопределён. Номера маркеров должны быть в диапазоне от 1 до 99.

Функция была добавлена в Qt 5.10.

QString QString::arg(QLatin1String a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

Это перегруженная функция.

Возвращает копию этой строки, в которой маркер с наименьшим номером заменён строкой a, т.е., %1, %2, ..., %99.

fieldWidth задаёт минимальное количество символов, которое должно занимать a. Если a занимает меньше места, чем fieldWidth, она дополняется символом fillChar. Положительное значение fieldWidth создаёт текст, выровненный по правому краю. Отрицательное значение fieldWidth создаёт текст, выровненный по левому краю.

Одно из преимуществ использования arg() по сравнению с asprintf() состоит в том, что порядок числовых маркеров может измениться, если строки приложения переведены на другие языки, но каждый вызов arg() всё равно заменит маркер с наименьшим номером, независимо от его местоположения. Кроме того, если маркер %i встречается в строке более одного раза, arg() заменяет все такие маркеры.

Если оставшихся не заменённых маркеров нет, выводится сообщение об ошибке, и результат неопределён. Номера маркеров должны быть в диапазоне от 1 до 99.

Функция была добавлена в Qt 5.10.

QString QString::asprintf(const char *cformat, ...)

Безопасно строит форматированную строку из формата строки cformat и произвольного списка аргументов.

Строка формата поддерживает спецификаторы преобразования, модификаторы длины и флаги, предоставляемые функцией printf() в стандартной библиотеке C++. Строка cformat и аргументы должны быть закодированы в UTF-8.

Примечание: последовательность escape %lc ожидает символ Юникода типа char16_t, или ushort (как возвращается QChar::unicode()). Последовательность escape %ls ожидает указатель на нуль-терминированный массив символов Юникода типа char16_t, или ushort (как возвращается QString::utf16()). Это противоречит printf() в стандартной библиотеке C++, которая определяет %lc для вывода wchar_t и %ls для вывода wchar_t*, и также может вызывать предупреждения компилятора на платформах, где размер wchar_t не равен 16 битам.

Предупреждение: Не рекомендуется использовать QString::asprintf() в новом коде Qt. Вместо этого рассмотрите использование QTextStream или arg(), которые поддерживают строки Юникода без проблем и являются безопасными по типу. Вот пример с использованием QTextStream:

Для переводов, особенно если строки содержат более одной последовательности escape, следует рассмотреть использование функции arg(). Это позволяет контролировать порядок замен переводчику.

Функция была добавлена в Qt 5.5.

См. также arg().

const QChar QString::at(qsizetype position) const

Возвращает символ по заданному индексу position в строке.

position должен быть допустимым индексом в строке (т.е., 0 <= position < size()).

См. также operator[]().

QChar QString::back() const

Возвращает последний символ в строке. То же самое, что и at(size() - 1).

Функция предоставляется для совместимости со STL.

Предупреждение: Вызов этой функции для пустой строки является неопределённым поведением.

Функция была добавлена в Qt 5.10.

См. также front(), at(), и operator[]().

QChar &QString::back()

Возвращает ссылку на последний символ в строке. То же самое, что и operator[](size() - 1).

Функция предоставляется для совместимости со STL.

Предупреждение: Вызов этой функции для пустой строки является неопределённым поведением.

Функция была добавлена в Qt 5.10.

См. также front(), at(), и operator[]().

QString::iterator QString::begin()

Возвращает итератор STL, указывающий на первый символ в строке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении QString.

См. также constBegin() и end().

QString::const_iterator QString::begin() const

Эта функция перегружает begin().

qsizetype QString::capacity() const

Возвращает максимальное количество символов, которое может храниться в строке без принудительной переаллокации.

Единственная цель этой функции — предоставить возможность тонкой настройки использования памяти QString. Как правило, вам редко потребуется вызывать эту функцию. Если вы хотите узнать, сколько символов содержится в строке, вызовите size().

Примечание: статически выделенная строка сообщит ёмкость 0, даже если она не пуста.

Примечание: Положение свободного пространства в блоке выделенной памяти не определено. Другими словами, не следует предполагать, что свободная память всегда расположена после инициализированных элементов.

См. также reserve() и squeeze().

[since 5.0] QString::const_iterator QString::cbegin() const

Возвращает постоянный итератор STL-стиля, указывающий на первый символ в строке.

Предупреждение: Возвращаемый итератор становится недействительным при отделении или при изменении объекта QString.

Эта функция была представлена в Qt 5.0.

См. также begin() и cend().

[since 5.0] QString::const_iterator QString::cend() const

Возвращает постоянный итератор STL-стиля, указывающий сразу после последнего символа в строке.

Предупреждение: Возвращаемый итератор становится недействительным при отделении или при изменении объекта QString.

Эта функция была представлена в Qt 5.0.

См. также cbegin() и end().

void QString::chop(qsizetype n)

Удаляет n символов с конца строки.

Если n больше или равно size(), результатом является пустая строка; если n отрицательно, это эквивалентно передаче нуля.

Пример:

QString str("LOGOUT\r\n");
str.chop(2);
// str == "LOGOUT"

Если вы хотите удалить символы с начала строки, используйте remove() вместо этого.

См. также truncate(), resize(), remove() и QStringView::chop().

[since 5.10] QString QString::chopped(qsizetype len) const

Возвращает строку, содержащую size() - len левых символов этой строки.

Примечание: Поведение не определено, если len отрицательно или больше size().

Эта функция была представлена в Qt 5.10.

См. также endsWith(), first(), last(), sliced(), chop() и truncate().

void QString::clear()

Очищает содержимое строки и делает ее пустой.

См. также resize() и isNull().

[static] int QString::compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Сравнивает s1 с s2 и возвращает целое число меньше, равно или больше нуля, если s1 меньше, равно или больше s2.

Если cs равен Qt::CaseSensitive, сравнение выполняется с учётом регистра; в противном случае сравнение выполняется без учёта регистра.

Сравнение с учётом регистра основано исключительно на числовых значениях Unicode символов и очень быстрое, но не соответствует ожиданиям человека. Рассмотрите сортировку строк для отображения пользователю с помощью localeAwareCompare().

int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive);  // x == 0
int y = QString::compare("auto", "Car", Qt::CaseSensitive);     // y > 0
int z = QString::compare("auto", "Car", Qt::CaseInsensitive);   // z < 0

См. также operator==(), operator<(), operator>() и Сравнение строк.

int QString::compare(const QString &other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает compare().

Лексически сравнивает эту строку с строкой other и возвращает целое число меньше, равно или больше нуля, если эта строка меньше, равна или больше, чем другая строка.

То же самое, что compare(*this, other, cs).

int QString::compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает compare().

То же самое, что compare(*this, other, cs).

[since 5.12] int QString::compare(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает compare().

Выполняет сравнение этого с s, используя настройку чувствительности к регистру cs.

Эта функция была представлена в Qt 5.12.

[since 5.14] int QString::compare(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает compare().

Выполняет сравнение этого с ch, используя настройку чувствительности к регистру cs.

Эта функция была представлена в Qt 5.14.

[static] int QString::compare(const QString &s1, QLatin1String s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает compare().

Выполняет сравнение s1 и s2, используя настройку чувствительности к регистру cs.

[static] int QString::compare(QLatin1String s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает compare().

Выполняет сравнение s1 и s2, используя настройку чувствительности к регистру cs.

[static] int QString::compare(const QString &s1, QStringView s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает compare().

[static] int QString::compare(QStringView s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает compare().

QString::const_iterator QString::constBegin() const

Возвращает постоянный итератор STL-стиля, указывающий на первый символ в строке.

Предупреждение: Возвращаемый итератор становится недействительным при отделении или при изменении объекта QString.

См. также begin() и constEnd().

const QChar *QString::constData() const

Возвращает указатель на данные, хранящиеся в объекте QString. Указатель может использоваться для доступа к символам, составляющим строку.

Обратите внимание, что указатель остается действительным только до тех пор, пока строка не изменится.

Примечание: Возвращаемая строка может не быть завершена символом '\0'. Используйте size(), чтобы определить длину массива.

См. также data(), operator[]() и fromRawData().

QString::const_iterator QString::constEnd() const

Возвращает постоянный итератор STL-стиля, указывающий сразу после последнего символа в строке.

Предупреждение: Возвращаемый итератор становится недействительным при отделении или при изменении объекта QString.

См. также constBegin() и end().

bool QString::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает true , если эта строка содержит вхождение строки str; в противном случае возвращает false.

Если cs равен Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае поиск выполняется без учёта регистра.

Пример:

QString str = "Peter Pan";
str.contains("peter", Qt::CaseInsensitive);    // returns true

См. также indexOf() и count().

bool QString::contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает contains().

Возвращает true , если эта строка содержит вхождение символа ch; в противном случае возвращает false.

[since 5.3] bool QString::contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает contains().

Возвращает true если в этой строке есть вхождение латинской строки str; в противном случае возвращает false.

Эта функция была добавлена в Qt 5.3.

[since 5.14] bool QString::contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает contains().

Возвращает true если в этой строке есть вхождение указанного фрагмента строки str; в противном случае возвращает false.

Если cs имеет значение Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае — без учёта регистра.

Эта функция была добавлена в Qt 5.14.

См. также indexOf() и count().

[since 5.1] bool QString::contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const

Возвращает true если регулярное выражение re совпадает с частью этой строки; в противном случае возвращает false.

Если совпадение найдено и rmatch не nullptr, результаты совпадения записываются в объект QRegularExpressionMatch, на который указывает rmatch.

Эта функция была добавлена в Qt 5.1.

См. также QRegularExpression::match().

qsizetype QString::count(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает количество (возможно, перекрывающихся) вхождений строки str в этой строке.

Если cs имеет значение Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае — без учёта регистра.

См. также contains() и indexOf().

qsizetype QString::count() const

Эта функция перегружает count().

То же самое, что и size().

qsizetype QString::count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает count().

Возвращает количество вхождений символа ch в строке.

Если cs имеет значение Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае — без учёта регистра.

См. также contains() и indexOf().

[since 6.0] qsizetype QString::count(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает count().

Возвращает количество (возможно, перекрывающихся) вхождений фрагмента строки str в этой строке.

Если cs имеет значение Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае — без учёта регистра.

Эта функция была добавлена в Qt 6.0.

См. также contains() и indexOf().

[since 5.0] qsizetype QString::count(const QRegularExpression &re) const

Эта функция перегружает count().

Возвращает количество совпадений с регулярным выражением re в строке.

По историческим причинам, эта функция считает перекрывающиеся совпадения, поэтому в примере ниже есть четыре вхождения «ана» или «ама»:

QString str = "banana and panama";
str.count(QRegularExpression("a[nm]a"));    // returns 4

Это поведение отличается от простого перебора совпадений в строке с помощью QRegularExpressionMatchIterator.

Эта функция была добавлена в Qt 5.0.

См. также QRegularExpression::globalMatch().

[since 5.6] QString::const_reverse_iterator QString::crbegin() const

Возвращает постоянный итератор обратного обхода, указывающий на первый символ в строке в обратном порядке.

Предупреждение: Возвращаемый итератор становится недействительным при отсоединении или при изменении строки QString.

Эта функция была добавлена в Qt 5.6.

См. также begin(), rbegin(), и rend().

[since 5.6] QString::const_reverse_iterator QString::crend() const

Возвращает постоянный итератор обратного обхода, указывающий на позицию сразу после последнего символа в строке в обратном порядке.

Предупреждение: Возвращаемый итератор становится недействительным при отсоединении или при изменении строки QString.

Эта функция была добавлена в Qt 5.6.

См. также end(), rend(), и rbegin().

QChar *QString::data()

Возвращает указатель на данные, хранящиеся в QString. Указатель можно использовать для доступа к символам и изменения строки.

В отличие от constData() и unicode(), возвращаемые данные всегда завершаются символом '\0'.

Пример:

QString str = "Hello world";
QChar *data = str.data();
while (!data->isNull()) {
    qDebug() << data->unicode();
    ++data;
}

Обратите внимание, что указатель остаётся действительным только до тех пор, пока строка не изменяется другими средствами. Для только для чтения доступа, constData() быстрее, потому что он никогда не вызывает глубокую копию.

См. также constData() и operator[]().

const QChar *QString::data() const

Это перегруженная функция.

Примечание: Возвращаемая строка может не завершаться символом '\0'. Используйте size() для определения длины массива.

См. также fromRawData().

QString::iterator QString::end()

Возвращает итератор, указывающий на позицию сразу после последнего символа в строке.

Предупреждение: Возвращаемый итератор становится недействительным при отсоединении или при изменении строки QString.

См. также begin() и constEnd().

QString::const_iterator QString::end() const

Эта функция перегружает end().

bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает true если строка оканчивается на s; в противном случае возвращает false.

Если cs имеет значение Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае — без учёта регистра.

QString str = "Bananas";
str.endsWith("anas");         // returns true
str.endsWith("pple");         // returns false

См. также startsWith().

[since 5.10] bool QString::endsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает endsWith().

Возвращает true если строка оканчивается на указанный фрагмент строки str; в противном случае возвращает false.

Если cs имеет значение Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае — без учёта регистра.

Эта функция была добавлена в Qt 5.10.

См. также startsWith().

bool QString::endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает endsWith().

bool QString::endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает true если строка оканчивается на c; в противном случае возвращает false.

Эта функция перегружает endsWith().

[since 6.1] QString::iterator QString::erase(QString::const_iterator first, QString::const_iterator last)

Удаляет из строки символы в полуоткрытом диапазоне [ first , last ). Возвращает итератор, ссылающийся на символ last до удаления.

Эта функция была добавлена в Qt 6.1.

QString &QString::fill(QChar ch, qsizetype size = -1)

Устанавливает каждый символ в строке на символ ch. Если size отличается от -1 (по умолчанию), размер строки предварительно изменяется на size.

Пример:

QString str = "Berlin";
str.fill('z');
// str == "zzzzzz"

str.fill('A', 2);
// str == "AA"

См. также resize().

[since 6.0] QString QString::first(qsizetype n) const

Возвращает строку, содержащую первые n символов этой строки.

Примечание: Поведение не определено, когда n < 0 или n > размер().

QString x = "Pineapple";
QString y = x.first(4);      // y == "Pine"

Эта функция была добавлена в Qt 6.0.

См. также last(), sliced(), startsWith(), chopped(), chop(), и truncate().

[static, since 5.2] QString QString::fromCFString(CFStringRef string)

Создаёт новый QString, содержащий копию CFString string.

Примечание: эта функция доступна только на macOS и iOS.

Эта функция была добавлена в Qt 5.2.

[static] QString QString::fromLatin1(const char *str, qsizetype size)

Возвращает QString, инициализированную первыми size символами строки Latin-1 str.

Если size равно -1, strlen(str) используется вместо этого.

См. также toLatin1(), fromUtf8() и fromLocal8Bit().

[static, since 6.0] QString QString::fromLatin1(QByteArrayView str)

Это перегруженная функция.

Возвращает QString, инициализированную строкой Latin-1 str.

Эта функция была добавлена в Qt 6.0.

[static, since 5.0] template <typename> QString QString::fromLatin1(const QByteArray &str)

Это перегруженная функция.

Возвращает QString, инициализированную строкой Latin-1 str.

Эта функция была добавлена в Qt 5.0.

[static] QString QString::fromLocal8Bit(const char *str, qsizetype size)

Возвращает QString, инициализированную первыми size символами 8-битной строки str.

Если size равно -1, strlen(str) используется вместо этого.

В системах Unix это эквивалентно fromUtf8(), в Windows используется текущая кодовая страница системы.

См. также toLocal8Bit(), fromLatin1() и fromUtf8().

[static, since 6.0] QString QString::fromLocal8Bit(QByteArrayView str)

Это перегруженная функция.

Возвращает QString, инициализированную 8-битной строкой str.

Эта функция была добавлена в Qt 6.0.

[static, since 5.0] template <typename> QString QString::fromLocal8Bit(const QByteArray &str)

Это перегруженная функция.

Возвращает QString, инициализированную 8-битной строкой str.

Эта функция была добавлена в Qt 5.0.

[static, since 5.2] QString QString::fromNSString(const NSString *string)

Создаёт новый QString, содержащий копию NSString string.

Примечание: эта функция доступна только на macOS и iOS.

Эта функция была добавлена в Qt 5.2.

[static] QString QString::fromRawData(const QChar *unicode, qsizetype size)

Создаёт QString, который использует первые size символов Юникода в массиве unicode. Данные в unicode не копируются. Вызывающий должен гарантировать, что unicode не будет удалён или изменён, пока существует QString (или немодифицированная копия).

Любые попытки изменить QString или копии приведут к созданию глубокой копии данных, гарантируя, что исходные данные не изменятся.

Вот пример того, как мы можем использовать QRegularExpression на исходных данных в памяти, не требуя копирования данных в QString:

QRegularExpression pattern("\u00A4");
static const QChar unicode[] = {
        0x005A, 0x007F, 0x00A4, 0x0060,
        0x1009, 0x0020, 0x0020};
qsizetype size = sizeof(unicode) / sizeof(QChar);

QString str = QString::fromRawData(unicode, size);
if (str.contains(pattern) {
    // ...
}

Предупреждение: строка, созданная с помощью fromRawData(), не завершается '\0', за исключением случаев, когда исходные данные содержат символ '\0' в позиции size. Это означает, что unicode() не вернёт строку, завершённую '\0' (хотя utf16() вернёт, но это сопряжено с копированием исходных данных).

См. также fromUtf16() и setRawData().

[static] QString QString::fromStdString(const std::string &str)

Возвращает копию строки str. Указанная строка преобразуется в Юникод с помощью функции fromUtf8().

См. также fromLatin1(), fromLocal8Bit(), fromUtf8() и QByteArray::fromStdString().

[static, since 5.5] QString QString::fromStdU16String(const std::u16string &str)

Возвращает копию строки str. Предполагается, что заданная строка закодирована в UTF-16.

Эта функция была добавлена в Qt 5.5.

См. также fromUtf16(), fromStdWString() и fromStdU32String().

[static, since 5.5] QString QString::fromStdU32String(const std::u32string &str)

Возвращает копию строки str. Предполагается, что заданная строка закодирована в UCS-4.

Эта функция была добавлена в Qt 5.5.

См. также fromUcs4(), fromStdWString() и fromStdU16String().

[static] QString QString::fromStdWString(const std::wstring &str)

Возвращает копию строки str. Предполагается, что заданная строка закодирована в utf16, если размер wchar_t равен 2 байтам (например, в Windows), и в ucs4, если размер wchar_t равен 4 байтам (большинство систем Unix).

См. также fromUtf16(), fromLatin1(), fromLocal8Bit(), fromUtf8(), fromUcs4(), fromStdU16String() и fromStdU32String().

[static, since 5.3] QString QString::fromUcs4(const char32_t *unicode, qsizetype size = -1)

Возвращает QString, инициализированную первыми size символами Юникод-строки unicode (кодировка ISO-10646-UCS-4).

Если size равно -1 (по умолчанию), unicode должен быть завершён символом '\0'.

Эта функция была добавлена в Qt 5.3.

См. также toUcs4(), fromUtf16(), utf16(), setUtf16(), fromWCharArray() и fromStdU32String().

[static] QString QString::fromUtf8(const char *str, qsizetype size)

Возвращает QString, инициализированную первыми size байтами UTF-8 строки str.

Если size равно -1, strlen(str) используется вместо этого.

UTF-8 — это кодировка Юникода и может представлять все символы в строке Юникода, такой как QString. Однако с UTF-8 возможны недопустимые последовательности, и в случае их обнаружения они будут заменены одним или несколькими «символами замены» или подавлены. Это включает в себя не-Юникод последовательности, не-символы, избыточные последовательности или суррогатные кодпоинты, закодированные в UTF-8.

Эта функция может использоваться для обработки поступающих данных по частям, пока все символы UTF-8 не будут завершены в поступающих данных. Любые незавершенные символы в конце строки будут заменены или подавлены. Для выполнения состоятельного декодирования используйте QStringDecoder.

См. также toUtf8(), fromLatin1() и fromLocal8Bit().

[static, since 6.0] QString QString::fromUtf8(QByteArrayView str)

Это перегруженный метод.

Возвращает QString, инициализированный строкой UTF-8 str.

Этот метод был добавлен в Qt 6.0.

[static, since 5.0] template <typename> QString QString::fromUtf8(const QByteArray &str)

Это перегруженный метод.

Возвращает QString, инициализированный строкой UTF-8 str.

Этот метод был добавлен в Qt 5.0.

[static, since 6.1] template <typename> QString QString::fromUtf8(const char8_t *str)

Это перегруженный метод.

Этот перегруз доступен только при компиляции в режиме C++20.

Этот метод был добавлен в Qt 6.1.

[static, since 6.0] template <typename> QString QString::fromUtf8(const char8_t *str, qsizetype size)

Это перегруженный метод.

Этот перегруз доступен только при компиляции в режиме C++20.

Этот метод был добавлен в Qt 6.0.

[static, since 5.3] QString QString::fromUtf16(const char16_t *unicode, qsizetype size = -1)

Возвращает QString, инициализированный первыми size символами строке Unicode unicode (кодировка ISO-10646-UTF-16).

Если size равно -1 (по умолчанию), unicode должна быть завершена нулем '\0'.

Метод проверяет наличие метки порядка байтов (BOM). Если её нет, предполагается порядок байтов хоста.

Этот метод медленный по сравнению с другими преобразованиями Unicode. Если возможно, используйте QString(const QChar *, int) или QString(const QChar *).

QString создаёт глубокую копию данных Unicode.

Этот метод был добавлен в Qt 5.3.

См. также utf16(), setUtf16(), и fromStdU16String().

[static] QString QString::fromWCharArray(const wchar_t *string, qsizetype size = -1)

Возвращает копию string, где кодировка string зависит от размера wchar. Если wchar имеет 4 байта, string интерпретируется как UCS-4, если 2 байта — как UTF-16.

Если size равно -1 (по умолчанию), string должна быть завершена нулём '\0'.

См. также fromUtf16(), fromLatin1(), fromLocal8Bit(), fromUtf8(), fromUcs4(), и fromStdWString().

[since 5.10] QChar QString::front() const

Возвращает первый символ в строке. То же, что и at(0).

Этот метод предоставлен для совместимости со STL.

Предупреждение: Вызов этого метода для пустой строки приводит к неопределённому поведению.

Этот метод был добавлен в Qt 5.10.

См. также back(), at(), и operator[]().

[since 5.10] QChar &QString::front()

Возвращает ссылку на первый символ в строке. То же, что и operator[](0).

Этот метод предоставлен для совместимости со STL.

Предупреждение: Вызов этого метода для пустой строки приводит к неопределённому поведению.

Этот метод был добавлен в Qt 5.10.

См. также back(), at(), и operator[]().

qsizetype QString::indexOf(QLatin1String str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает позицию первого вхождения строки str в этой строке, начиная поиск с позиции from. Возвращает -1, если str не найдена.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; иначе — регистронезависимый.

Пример:

QString x = "sticky question";
QString y = "sti";
x.indexOf(y);               // returns 0
x.indexOf(y, 1);            // returns 10
x.indexOf(y, 10);           // returns 10
x.indexOf(y, 11);           // returns -1

Если from равно -1, поиск начинается с последнего символа; если -2, со второго с конца и так далее.

См. также lastIndexOf(), contains(), и count().

qsizetype QString::indexOf(QChar ch, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Этот метод перегружает indexOf().

Возвращает позицию первого вхождения символа ch в строке, начиная поиск с позиции from. Возвращает -1, если ch не найдена.

qsizetype QString::indexOf(const QString &str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает позицию первого вхождения строки str в этой строке, начиная поиск с позиции from. Возвращает -1, если str не найдена.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; иначе — регистронезависимый.

Пример:

QString x = "sticky question";
QString y = "sti";
x.indexOf(y);               // returns 0
x.indexOf(y, 1);            // returns 10
x.indexOf(y, 10);           // returns 10
x.indexOf(y, 11);           // returns -1

Если from равно -1, поиск начинается с последнего символа; если -2, со второго с конца и так далее.

См. также lastIndexOf(), contains(), и count().

[since 5.14] qsizetype QString::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Этот метод перегружает indexOf().

Возвращает позицию первого вхождения строкового представления str в этой строке, начиная поиск с позиции from. Возвращает -1, если str не найдена.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; иначе — регистронезависимый.

Если from равно -1, поиск начинается с последнего символа; если -2, со второго с конца и так далее.

Этот метод был добавлен в Qt 5.14.

См. также QStringView::indexOf(), lastIndexOf(), contains(), и count().

[since 5.5] qsizetype QString::indexOf(const QRegularExpression &re, qsizetype from = 0, QRegularExpressionMatch *rmatch = nullptr) const

Возвращает позицию первого совпадения регулярного выражения re в строке, начиная поиск с позиции from. Возвращает -1, если re не найдено нигде.

Если совпадение найдено и rmatch не nullptr, оно также записывает результаты совпадения в объект QRegularExpressionMatch, на который указывает rmatch.

Пример:

QString str = "the minimum";
str.indexOf(QRegularExpression("m[aeiou]"), 0);       // returns 4

QString str = "the minimum";
QRegularExpressionMatch match;
str.indexOf(QRegularExpression("m[aeiou]"), 0, &match);       // returns 4
// match.captured() == mi

Этот метод был добавлен в Qt 5.5.

QString &QString::insert(qsizetype position, const QString &str)

Вставляет строку str в указанную позицию position и возвращает ссылку на эту строку.

Пример:

QString str = "Meal";
str.insert(1, QString("ontr"));
// str == "Montreal"

Размер этой строки увеличивается для размещения вставки. Если position находится за пределами строки, к строке добавляются пробелы до достижения этой position, за которыми следует str.

См. также append(), prepend(), replace(), и remove().

QString &QString::insert(qsizetype position, QChar ch)

Этот метод перегружает insert().

Вставляет ch в указанную позицию position в строке.

Размер этой строки увеличивается для размещения вставки. Если position находится за пределами строки, к строке добавляются пробелы до достижения этой position, за которыми следует ch.

QString &QString::insert(qsizetype position, const QChar *unicode, qsizetype size)

Этот метод перегружает insert().

Вставляет первые size символов массива QChar unicode в указанную позицию position в строке.

Размер этой строки увеличивается для размещения вставки. Если position находится за пределами строки, к строке добавляются пробелы до достижения этой position, за которыми следует size символов массива QChar unicode.

[since 6.0] QString &QString::insert(qsizetype position, QStringView str)

Эта функция перегружает insert().

Вставляет строку str по указанному индексу position и возвращает ссылку на эту строку.

Эта строка увеличивается, чтобы вместить вставку. Если position находится за пределами конца строки, к строке добавляются пробелы, чтобы достичь этого position, а затем str.

Эта функция была добавлена в Qt 6.0.

QString &QString::insert(qsizetype position, QLatin1String str)

Эта функция перегружает insert().

Вставляет строку Latin-1 str по указанному индексу position.

Эта строка увеличивается, чтобы вместить вставку. Если position находится за пределами конца строки, к строке добавляются пробелы, чтобы достичь этого position, а затем str.

[since 5.5] QString &QString::insert(qsizetype position, const char *str)

Эта функция перегружает insert().

Вставляет строку C str по указанному индексу position и возвращает ссылку на эту строку.

Эта строка увеличивается, чтобы вместить вставку. Если position находится за пределами конца строки, к строке добавляются пробелы, чтобы достичь этого position, а затем str.

Эта функция недоступна, когда определено QT_NO_CAST_FROM_ASCII.

Эта функция была добавлена в Qt 5.5.

[since 5.5] QString &QString::insert(qsizetype position, const QByteArray &str)

Эта функция перегружает insert().

Интерпретирует содержимое str как UTF-8, вставляет закодированную в Unicode строку по указанному индексу position и возвращает ссылку на эту строку.

Эта строка увеличивается, чтобы вместить вставку. Если position находится за пределами конца строки, к строке добавляются пробелы, чтобы достичь этого position, а затем str.

Эта функция недоступна, когда определено QT_NO_CAST_FROM_ASCII.

Эта функция была добавлена в Qt 5.5.

bool QString::isEmpty() const

Возвращает true если в строке нет символов; в противном случае возвращает false.

Пример:

QString().isEmpty();            // returns true
QString("").isEmpty();          // returns true
QString("x").isEmpty();         // returns false
QString("abc").isEmpty();       // returns false

См. также size().

[since 5.12] bool QString::isLower() const

Возвращает true если строка в нижнем регистре, то есть она идентична результату её преобразования в нижний регистр с помощью toLower().

Обратите внимание, что это не означает, что строка не содержит заглавных букв (некоторые заглавные буквы не имеют эквивалента в нижнем регистре; они остаются неизменными при преобразовании в нижний регистр с помощью toLower()). Для получения дополнительной информации см. стандарт Unicode, раздел 3.13.

Эта функция была добавлена в Qt 5.12.

См. также QChar::toLower() и isUpper().

bool QString::isNull() const

Возвращает true если эта строка равна null; в противном случае возвращает false.

Пример:

QString().isNull();             // returns true
QString("").isNull();           // returns false
QString("abc").isNull();        // returns false

Qt различает пустые строки и строки null по историческим причинам. Для большинства приложений важно, содержит ли строка данные, и это можно определить с помощью функции isEmpty().

См. также isEmpty().

bool QString::isRightToLeft() const

Возвращает true если строка читается справа налево.

См. также QStringView::isRightToLeft().

[since 5.12] bool QString::isUpper() const

Возвращает true если строка в верхнем регистре, то есть она идентична результату её преобразования в верхний регистр с помощью toUpper().

Обратите внимание, что это не означает, что строка не содержит строчных букв (некоторые строчные буквы не имеют эквивалента в верхнем регистре; они остаются неизменными при преобразовании в верхний регистр с помощью toUpper()). Для получения дополнительной информации см. стандарт Unicode, раздел 3.13.

Эта функция была добавлена в Qt 5.12.

См. также QChar::toUpper() и isLower().

[since 5.15] bool QString::isValidUtf16() const

Возвращает true если строка содержит данные, валидные для UTF-16, или false в противном случае.

Обратите внимание, что эта функция не выполняет специальную проверку данных; она просто проверяет, может ли она быть успешно декодирована из UTF-16. Данные предполагаются в порядке байтов хоста; наличие BOM не имеет значения.

Эта функция была добавлена в Qt 5.15.

См. также QStringView::isValidUtf16().

[since 6.0] QString QString::last(qsizetype n) const

Возвращает строку, содержащую последние n символов этой строки.

Примечание: Поведение неопределено, когда n < 0 или n > size().

QString x = "Pineapple";
QString y = x.last(5);      // y == "apple"

Эта функция была добавлена в Qt 6.0.

См. также first(), sliced(), endsWith(), chopped(), chop(), и truncate().

qsizetype QString::lastIndexOf(const QString &str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает позицию последнего вхождения строки str в этой строке, выполняя поиск назад от позиции from. Если from равно -1 (по умолчанию), поиск начинается с последнего символа; если from равно -2, с предпоследнего символа и так далее. Возвращает -1, если str не найдена.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Пример:

QString x = "crazy azimuths";
QString y = "az";
x.lastIndexOf(y);           // returns 6
x.lastIndexOf(y, 6);        // returns 6
x.lastIndexOf(y, 5);        // returns 2
x.lastIndexOf(y, 1);        // returns -1

См. также indexOf(), contains(), и count().

qsizetype QString::lastIndexOf(QChar ch, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает lastIndexOf().

Возвращает позицию последнего вхождения символа ch, выполняя поиск назад от позиции from.

qsizetype QString::lastIndexOf(QLatin1String str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает lastIndexOf().

Возвращает позицию последнего вхождения строки str в этой строке, выполняя поиск назад от позиции from. Если from равно -1 (по умолчанию), поиск начинается с последнего символа; если from равно -2, с предпоследнего символа и так далее. Возвращает -1, если str не найдена.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Пример:

QString x = "crazy azimuths";
QString y = "az";
x.lastIndexOf(y);           // returns 6
x.lastIndexOf(y, 6);        // returns 6
x.lastIndexOf(y, 5);        // returns 2
x.lastIndexOf(y, 1);        // returns -1

См. также indexOf(), contains(), и count().

[since 5.14] qsizetype QString::lastIndexOf(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает lastIndexOf().

Возвращает позицию последнего вхождения строки str в этой строке, выполняя поиск назад от позиции from. Если from равно -1 (по умолчанию), поиск начинается с последнего символа; если from равно -2, с предпоследнего символа и так далее. Возвращает -1, если str не найдена.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Эта функция была добавлена в Qt 5.14.

См. также indexOf(), contains(), и count().

[since 5.5] qsizetype QString::lastIndexOf(const QRegularExpression &re, qsizetype from = -1, QRegularExpressionMatch *rmatch = nullptr) const

Возвращает позицию последнего совпадения регулярного выражения re в строке, которое начинается перед позицией from. Возвращает -1, если re нигде не совпало.

Если совпадение успешно и rmatch не nullptr, оно также записывает результаты совпадения в объект QRegularExpressionMatch, на который указывает rmatch.

Пример:

QString str = "the minimum";
str.lastIndexOf(QRegularExpression("m[aeiou]"));      // returns 8

QString str = "the minimum";
QRegularExpressionMatch match;
str.lastIndexOf(QRegularExpression("m[aeiou]"), -1, &match);      // returns 8
// match.captured() == mu

Примечание: Из-за того, как работает алгоритм сопоставления с регулярным выражением, эта функция фактически будет многократно сопоставлять с начала строки до достижения позиции from.

Эта функция была добавлена в Qt 5.5.

QString QString::left(qsizetype n) const

Возвращает подстроку, содержащую n левых символов строки.

Если известно, что n не может выйти за пределы границ, используйте first() вместо этого в новом коде, так как это быстрее.

Возвращается вся строка, если n больше или равно size(), или меньше нуля.

См. также first(), last(), startsWith(), chopped(), chop(), и truncate().

QString QString::leftJustified(qsizetype width, QChar fill = QLatin1Char(' '), bool truncate = false) const

Возвращает строку размером width, содержащую эту строку, дополненную символом fill.

Если truncate равно false и size() строки больше, чем width, возвращаемая строка — это копия строки.

long a = 63;
QString s = QString::number(a, 16);             // s == "3f"
QString t = QString::number(a, 16).toUpper();     // t == "3F"

Если truncate равно true и size() строки больше, чем width, любые символы в копии строки после позиции width удаляются, и возвращается копия.

QString str = "Pineapple";
str = str.leftJustified(5, '.', true);    // str == "Pinea"

См. также rightJustified().

qsizetype QString::length() const

Возвращает количество символов в этой строке. Эквивалентно size().

См. также resize().

[static] int QString::localeAwareCompare(const QString &s1, const QString &s2)

Сравнивает s1 с s2 и возвращает целое число, меньшее, равное или больше нуля, если s1 меньше, равна или больше s2 соответственно.

Сравнение выполняется с учетом локали и платформы. Используйте эту функцию для представления отсортированных списков строк пользователю.

См. также compare(), QLocale и Сравнение строк.

int QString::localeAwareCompare(const QString &other) const

Эта функция перегружает localeAwareCompare().

Сравнивает эту строку с строкой other и возвращает целое число, меньшее, равное или больше нуля, если эта строка меньше, равна или больше строки other соответственно.

Сравнение выполняется с учетом локали и платформы. Используйте эту функцию для представления отсортированных списков строк пользователю.

То же, что и localeAwareCompare(*this, other).

См. также Сравнение строк.

[since 6.0] int QString::localeAwareCompare(QStringView other) const

Эта функция перегружает localeAwareCompare().

Сравнивает эту строку со строкой other и возвращает целое число, меньшее, равное или больше нуля, если эта строка меньше, равна или больше строки other соответственно.

Сравнение выполняется с учетом локали и платформы. Используйте эту функцию для представления отсортированных списков строк пользователю.

То же, что и localeAwareCompare(*this, other).

Эта функция была добавлена в Qt 6.0.

См. также Сравнение строк.

[static, since 6.0] int QString::localeAwareCompare(QStringView s1, QStringView s2)

Эта функция перегружает localeAwareCompare().

Сравнивает s1 с s2 и возвращает целое число, меньшее, равное или больше нуля, если s1 меньше, равна или больше s2 соответственно.

Сравнение выполняется с учетом локали и платформы. Используйте эту функцию для представления отсортированных списков строк пользователю.

Эта функция была добавлена в Qt 6.0.

См. также Сравнение строк.

QString QString::mid(qsizetype position, qsizetype n = -1) const

Возвращает строку, содержащую n символов этой строки, начиная с указанного индекса position.

Если известно, что position и n не могут выйти за пределы границ, используйте sliced() вместо этого в новом коде, так как это быстрее.

Возвращает пустую строку, если индекс position превышает длину строки. Если в строке доступно меньше, чем n символов, начиная с заданной позиции position, или если n равно -1 (по умолчанию), функция возвращает все доступные символы, начиная с указанной позиции.

См. также first(), last(), sliced(), chopped(), chop(), и truncate().

QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const

Возвращает строку в заданном режиме нормализации Юникода mode, в соответствии с заданной version стандарта Юникод.

[static] QString QString::number(long n, int base = 10)

Возвращает строковое представление числа n в указанной системе счисления base.

По умолчанию основание равно 10 и должно быть в диапазоне от 2 до 36. Для оснований, отличных от 10, n обрабатывается как целое без знака.

Форматирование всегда использует QLocale::C, т.е. английский/США. Для получения локализованного строкового представления числа используйте QLocale::toString() с соответствующей локалью.

long a = 63;
QString s = QString::number(a, 16);             // s == "3f"
QString t = QString::number(a, 16).toUpper();     // t == "3F"

См. также setNum().

[static] QString QString::number(int n, int base = 10)

Эта функция перегружена.

[static] QString QString::number(uint n, int base = 10)

Эта функция перегружена.

[static] QString QString::number(ulong n, int base = 10)

Эта функция перегружена.

[static] QString QString::number(qlonglong n, int base = 10)

Эта функция перегружена.

[static] QString QString::number(qulonglong n, int base = 10)

Эта функция перегружена.

[static] QString QString::number(double n, char format = 'g', int precision = 6)

Возвращает строковое представление числа n, отформатированного в соответствии с указанными format и precision. Подробнее см. Форматы аргументов.

В отличие от QLocale::toString(), эта функция не учитывает настройки локали пользователя.

См. также setNum() и QLocale::toString().

QString &QString::prepend(const QString &str)

Добавляет строку str в начало этой строки и возвращает ссылку на эту строку.

Операция обычно очень быстрая (постоянное время), так как QString предварительно выделяет дополнительное место в начале данных строки, поэтому она может увеличиваться без перевыделения всей строки каждый раз.

Пример:

QString x = "ship";
QString y = "air";
x.prepend(y);
// x == "airship"

См. также append() и insert().

QString &QString::prepend(QChar ch)

Эта функция перегружает prepend().

Добавляет символ ch в начало этой строки.

[since 5.5] QString &QString::prepend(const QChar *str, qsizetype len)

Эта функция перегружает prepend().

Добавляет len символов из массива QChar str в начало этой строки и возвращает ссылку на эту строку.

Эта функция была добавлена в Qt 5.5.

[since 6.0] QString &QString::prepend(QStringView str)

Эта функция перегружает prepend().

Добавляет строку-представление str к началу этой строки и возвращает ссылку на эту строку.

Эта функция была добавлена в Qt 6.0.

QString &QString::prepend(QLatin1String str)

Эта функция перегружает prepend().

Добавляет строку Latin-1 str к этой строке.

QString &QString::prepend(const char *str)

Эта функция перегружает prepend().

Добавляет строку str к этой строке. Указатель const char преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить эту функцию, определив QT_NO_CAST_FROM_ASCII при компиляции ваших приложений. Это может быть полезно, если вы хотите убедиться, что все видимые пользователю строки проходят через QObject::tr(), например.

QString &QString::prepend(const QByteArray &ba)

Эта функция перегружает prepend().

Добавляет массив байтов ba к этой строке. Массив байтов преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить эту функцию, определив QT_NO_CAST_FROM_ASCII при компиляции ваших приложений. Это может быть полезно, если вы хотите убедиться, что все видимые пользователю строки проходят через QObject::tr(), например.

void QString::push_back(const QString &other)

Эта функция предоставляется для совместимости со STL, добавляя заданную строку other в конец этой строки. Она эквивалентна append(other).

См. также append().

void QString::push_back(QChar ch)

Это перегруженная функция.

Добавляет заданный символ ch в конец этой строки.

void QString::push_front(const QString &other)

Эта функция предоставляется для совместимости со STL, добавляя заданную строку other в начало этой строки. Она эквивалентна prepend(other).

См. также prepend().

void QString::push_front(QChar ch)

Это перегруженная функция.

Добавляет заданный символ ch в начало этой строки.

[since 5.6] QString::reverse_iterator QString::rbegin()

Возвращает обратный итератор STL, указывающий на первый символ в строке в обратном порядке.

Предупреждение: Возвращённый итератор становится недействительным при отделении или при модификации QString.

Эта функция была добавлена в Qt 5.6.

См. также begin(), crbegin() и rend().

[since 5.6] QString::const_reverse_iterator QString::rbegin() const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.6.

QString &QString::remove(qsizetype position, qsizetype n)

Удаляет n символов из строки, начиная с указанного индекса position, и возвращает ссылку на строку.

Если указанный индекс position находится внутри строки, но position + n выходит за пределы строки, строка усекается до указанного индекса position.

QString s = "Montreal";
s.remove(1, 4);
// s == "Meal"

Удаление элементов сохранит ёмкость строки и не уменьшит объём выделенной памяти. Чтобы освободить избыточную ёмкость и освободить как можно больше памяти, вызовите squeeze() после последнего изменения размера строки.

См. также insert() и replace().

QString &QString::remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Удаляет все вхождения символа ch в этой строке и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Пример:

QString t = "Ali Baba";
t.remove(QChar('a'), Qt::CaseInsensitive);
// t == "li Bb"

Это то же самое, что replace(ch, "", cs).

Удаление элементов сохранит ёмкость строки и не уменьшит объём выделенной памяти. Чтобы освободить избыточную ёмкость и освободить как можно больше памяти, вызовите squeeze() после последнего изменения размера строки.

См. также replace().

[since 5.11] QString &QString::remove(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Это перегруженная функция.

Удаляет все вхождения заданной строки str в этой строке и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Это то же самое, что replace(str, "", cs).

Удаление элементов сохранит ёмкость строки и не уменьшит объём выделенной памяти. Чтобы освободить избыточную ёмкость и освободить как можно больше памяти, вызовите squeeze() после последнего изменения размера строки.

Эта функция была добавлена в Qt 5.11.

См. также replace().

QString &QString::remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Удаляет все вхождения заданной строки str в этой строке и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Это то же самое, что replace(str, "", cs).

Удаление элементов сохранит ёмкость строки и не уменьшит объём выделенной памяти. Чтобы освободить избыточную ёмкость и освободить как можно больше памяти, вызовите squeeze() после последнего изменения размера строки.

См. также replace().

[since 5.0] QString &QString::remove(const QRegularExpression &re)

Удаляет все вхождения регулярного выражения re в строке и возвращает ссылку на строку. Например:

QString r = "Telephone";
r.remove(QRegularExpression("[aeiou]."));
// r == "The"

Удаление элементов сохранит ёмкость строки и не уменьшит объём выделенной памяти. Чтобы освободить избыточную ёмкость и освободить как можно больше памяти, вызовите squeeze() после последнего изменения размера строки.

Эта функция была добавлена в Qt 5.0.

См. также indexOf(), lastIndexOf() и replace().

[since 6.1] template <typename Predicate> QString &QString::removeIf(Predicate pred)

Удаляет из строки все элементы, для которых предикат pred возвращает true. Возвращает ссылку на строку.

Эта функция была добавлена в Qt 6.1.

См. также remove().

[since 5.6] QString::reverse_iterator QString::rend()

Возвращает обратный итератор STL, указывающий сразу за последним символом в строке в обратном порядке.

Предупреждение: Возвращённый итератор становится недействительным при отделении или при модификации QString.

Эта функция была добавлена в Qt 5.6.

См. также end(), crend() и rbegin().

[since 5.6] QString::const_reverse_iterator QString::rend() const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.6.

QString QString::repeated(qsizetype times) const

Возвращает копию этой строки, повторённую заданное число times раз.

Если times меньше 1, возвращается пустая строка.

Пример:

QString str("ab");
str.repeated(4);            // returns "abababab"

QString &QString::replace(qsizetype position, qsizetype n, const QString &after)

Заменяет n символов, начиная с индекса position, строкой after и возвращает ссылку на эту строку.

Примечание: Если указанный индекс position находится внутри строки, но position + n выходит за пределы диапазона строки, то n будет скорректирован, чтобы остановиться на конце строки.

Пример:

QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y);
// x == "Say no!"

См. также insert() и remove().

QString &QString::replace(qsizetype position, qsizetype n, QChar after)

Эта функция перегружает replace().

Заменяет n символов, начиная с индекса position, символом after и возвращает ссылку на эту строку.

QString &QString::replace(qsizetype position, qsizetype n, const QChar *unicode, qsizetype size)

Эта функция перегружает replace().

Заменяет n символов, начиная с индекса position, первыми size символами массива QChar unicode и возвращает ссылку на эту строку.

QString &QString::replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение символа before символом after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

QString &QString::replace(const QChar *before, qsizetype blen, const QChar *after, qsizetype alen, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение в этой строке первых blen символов before первыми alen символами after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

QString &QString::replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение строки before строкой after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Примечание: Текст не перепроверяется после замены.

QString &QString::replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение строки before строкой after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Примечание: Текст не перепроверяется после замены.

QString &QString::replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение строки before строкой after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Примечание: Текст не перепроверяется после замены.

QString &QString::replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение строки before строкой after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Пример:

QString str = "colour behaviour flavour neighbour";
str.replace(QString("ou"), QString("o"));
// str == "color behavior flavor neighbor"

Примечание: Текст замены не перепроверяется после его вставки.

Пример:

QString equis = "xxxxxx";
equis.replace("xx", "x");
// equis == "xxx"

QString &QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение символа ch в строке на after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Эта функция перегружает replace().

Заменяет каждое вхождение символа c на строку after и возвращает ссылку на эту строку.

Если cs равно Qt::CaseSensitive (по умолчанию), поиск регистрозависимый; в противном случае поиск регистронезависимый.

Примечание: Текст не перепроверяется после замены.

[since 5.0] QString &QString::replace(const QRegularExpression &re, const QString &after)

Эта функция перегружает replace().

Заменяет каждое вхождение регулярного выражения re в строке на after. Возвращает ссылку на строку. Например:

QString s = "Banana";
s.replace(QRegularExpression("a[mn]"), "ox");
// s == "Boxoxa"

Для регулярных выражений, содержащих группы захвата, вхождения \1, \2, ..., в after заменяются строкой, захваченной соответствующей группой захвата.

QString t = "A <i>bon mot</i>.";
t.replace(QRegularExpression("<i>([^<]*)</i>"), "\\emph{\\1}");
// t == "A \\emph{bon mot}."

Эта функция была добавлена в Qt 5.0.

См. также indexOf(), lastIndexOf(), remove(), QRegularExpression и QRegularExpressionMatch.

void QString::reserve(qsizetype size)

Обеспечивает, что строка имеет место для как минимум size символов.

Если заранее известно, какой будет размер строки, можно вызвать эту функцию, чтобы избежать повторных перераспределений памяти при построении строки. Это может повысить производительность при построительном добавлении символов в строку. Длинная последовательность операций, добавляющих в строку символы, может вызвать несколько перераспределений, последнее из которых может оставить у вас значительно больше места, чем вам действительно нужно, что менее эффективно, чем одно выделение памяти нужного размера в начале.

Если вы не уверены, сколько места потребуется, обычно лучше использовать верхнюю границу как size или высокую оценку наиболее вероятного размера, если строгая верхняя граница будет намного больше этого. Если size является недооценкой, строка будет расти по мере необходимости, как только зарезервированный размер будет превышен, что может привести к большему выделению памяти, чем ваша лучшая переоценка, и замедлит операцию, которая ее спровоцирует.

Предупреждение: reserve() резервирует память, но не изменяет размер строки. Доступ к данным за пределами конца строки является неопределённым поведением. Если вам нужно получить доступ к памяти за пределами текущего конца строки, используйте resize().

Эта функция полезна для кода, который должен создавать длинную строку и хочет избежать многократного перераспределения памяти. В этом примере мы хотим добавлять в строку до тех пор, пока не выполнится какое-то условие true, и мы достаточно уверены, что размер достаточно большой, чтобы сделать вызов reserve() целесообразным:

QString result;
qsizetype maxSize;
bool condition;
QChar nextChar;

result.reserve(maxSize);

while (condition)
    result.append(nextChar);

result.squeeze();

См. также squeeze(), capacity() и resize().

void QString::resize(qsizetype size)

Устанавливает размер строки в size символов.

Если size больше текущего размера, строка расширяется до size символов, и новые символы добавляются в конец. Новые символы неинициализированы.

Если size меньше текущего размера, символы за позицией size исключаются из строки.

Примечание: Хотя resize() увеличит ёмкость при необходимости, он никогда не уменьшает ёмкость. Чтобы освободить избыточную ёмкость, используйте squeeze().

Пример:

QString s = "Hello world";
s.resize(5);
// s == "Hello"

s.resize(8);
// s == "Hello???" (where ? stands for any character)

Если вы хотите добавить определённое количество одинаковых символов в строку, используйте перегрузку resize(qsizetype, QChar).

Если вы хотите расширить строку до определённой ширины и заполнить новые позиции определённым символом, используйте функцию leftJustified():

Если size отрицательно, это эквивалентно передаче нуля.

QString r = "Hello";
r = r.leftJustified(10, ' ');
// r == "Hello     "

См. также truncate(), reserve() и squeeze().

[since 5.7] void QString::resize(qsizetype size, QChar fillChar)

Это перегруженная функция.

В отличие от resize(qsizetype), эта перегрузка инициализирует новые символы значением fillChar:

QString t = "Hello";
r.resize(t.size() + 10, 'X');
// t == "HelloXXXXXXXXXX"

Эта функция была добавлена в Qt 5.7.

QString QString::right(qsizetype n) const

Возвращает подстроку, содержащую n правых символов строки.

Если вы знаете, что n не может выйти за пределы, используйте last() вместо этого в новом коде, так как это быстрее.

Возвращается вся строка, если n больше или равно size() или меньше нуля.

См. также endsWith(), last(), first(), sliced(), chopped(), chop() и truncate().

QString QString::rightJustified(qsizetype width, QChar fill = QLatin1Char(' '), bool truncate = false) const

Возвращает строку длины size() width, содержащую символ fill, после которого следует исходная строка. Например:

QString s = "apple";
QString t = s.rightJustified(8, '.');    // t == "...apple"

Если truncate false и size() строки больше width, то возвращаемая строка является копией исходной строки.

Если truncate равно true и size() строки больше width, то возвращаемая строка усечена до позиции width.

QString str = "Pineapple";
str = str.rightJustified(5, '.', true);    // str == "Pinea"

См. также leftJustified().

QString QString::section(QChar sep, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const

Эта функция возвращает часть строки.

Строка рассматривается как последовательность полей, разделённых символом sep. Возвращаемая строка состоит из полей от позиции start до позиции end включительно. Если end не указан, включаются все поля от позиции start до конца строки. Поля нумеруются с 0, 1, 2 и так далее, слева направо, и -1, -2 и так далее, справа налево.

Аргумент flags может быть использован для изменения некоторых аспектов поведения функции, например, для определения чувствительности к регистру, пропуска пустых полей и обработки начальных и конечных разделителей; см. SectionFlags.

QString str;
QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp"; // First field is empty
QString::SectionFlag flag = QString::SectionSkipEmpty;

str = csv.section(',', 2, 2);   // str == "surname"
str = path.section('/', 3, 4);  // str == "bin/myapp"
str = path.section('/', 3, 3, flag); // str == "myapp"

Если start или end отрицательные, поля считаются справа от строки, правое поле – -1, следующий справа – -2 и так далее.

str = csv.section(',', -3, -2);  // str == "middlename,surname"
str = path.section('/', -1); // str == "myapp"

См. также split().

QString QString::section(const QString &sep, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const

Эта функция перегружает section().

QString str;
QString data = "forename**middlename**surname**phone";

str = data.section("**", 2, 2); // str == "surname"
str = data.section("**", -3, -2); // str == "middlename**surname"

См. также split().

[since 5.0] QString QString::section(const QRegularExpression &re, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const

Эта функция перегружает section().

Эта строка обрабатывается как последовательность полей, разделённых регулярным выражением re.

QString line = "forename\tmiddlename  surname \t \t phone";
QRegularExpression sep("\\s+");
str = line.section(sep, 2, 2); // str == "surname"
str = line.section(sep, -3, -2); // str == "middlename  surname"

Предупреждение: Использование этой версии с QRegularExpression намного дороже, чем перегруженные версии со строками и символами.

Эта функция была добавлена в Qt 5.0.

См. также split() и simplified().

QString &QString::setNum(int n, int base = 10)

Устанавливает строку в значение n в заданном основании base и возвращает ссылку на строку.

По умолчанию основание равно 10 и должно быть в диапазоне от 2 до 36. Для оснований, отличных от 10, n обрабатывается как беззнаковое целое число.

QString str;
str.setNum(1234);       // str == "1234"

Форматирование всегда использует QLocale::C, т. е. английский/США. Чтобы получить локальное строковое представление числа, используйте QLocale::toString() с соответствующей локалью.

См. также number().

QString &QString::setNum(short n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(ushort n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(uint n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(long n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(ulong n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(qlonglong n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(qulonglong n, int base = 10)

Это перегруженная функция.

QString &QString::setNum(float n, char format = 'g', int precision = 6)

Это перегруженная функция.

Устанавливает строку в значение n, отформатированное в соответствии с format и precision, и возвращает ссылку на строку.

Форматирование всегда использует QLocale::C, т. е. английский/США. Чтобы получить локальное строковое представление числа, используйте QLocale::toString() с соответствующей локалью.

См. также number().

QString &QString::setNum(double n, char format = 'g', int precision = 6)

Это перегруженная функция.

Устанавливает строку в значение n, отформатированное в соответствии с format и precision, и возвращает ссылку на строку.

format может быть 'e', 'E', 'f', 'g' или 'G' (см. Форматы аргументов для объяснения форматов).

Форматирование всегда использует QLocale::C, т. е. английский/США. Чтобы получить локальное строковое представление числа, используйте QLocale::toString() с соответствующей локалью.

См. также number().

QString &QString::setRawData(const QChar *unicode, qsizetype size)

Сбрасывает QString, чтобы использовать первые size Unicode-символов в массиве unicode. Данные в unicode не копируются. Вызывающий метод должен гарантировать, что unicode не будет удалён или изменён до тех пор, пока существует QString (или его неизменная копия).

Эта функция может быть использована вместо fromRawData() для повторного использования существующих объектов QString для экономии памяти при повторных выделениях.

См. также fromRawData().

QString &QString::setUnicode(const QChar *unicode, qsizetype size)

Изменяет размер строки на size символов и копирует unicode в строку.

Если unicode — nullptr, ничего не копируется, но строка всё равно изменяет размер до size.

См. также unicode() и setUtf16().

QString &QString::setUtf16(const ushort *unicode, qsizetype size)

Изменяет размер строки до size символов и копирует unicode в строку.

Если unicode — nullptr, ничего не копируется, но строка всё равно изменяет размер до size.

Обратите внимание, что в отличие от fromUtf16(), эта функция не учитывает BOM и, возможно, различающиеся порядки байтов.

См. также utf16() и setUnicode().

[since 5.10] void QString::shrink_to_fit()

Эта функция предоставляется для совместимости со STL. Она эквивалентна squeeze().

Эта функция была добавлена в Qt 5.10.

См. также squeeze().

QString QString::simplified() const

Возвращает строку, из которой удалены пробелы в начале и конце, а каждая последовательность внутренних пробелов заменена на один пробел.

Пробелы означают любой символ, для которого QChar::isSpace() возвращает true. Это включает ASCII-символы '\t', '\n', '\v', '\f', '\r' и ' '.

Пример:

QString str = "  lots\t of\nwhitespace\r\n ";
str = str.simplified();
// str == "lots of whitespace";

См. также trimmed().

qsizetype QString::size() const

Возвращает количество символов в этой строке.

Последний символ в строке находится в позиции size() - 1.

Пример:

QString str = "World";
qsizetype n = str.size();   // n == 5
str.data()[0];              // returns 'W'
str.data()[4];              // returns 'd'

См. также isEmpty() и resize().

[since 6.0] QString QString::sliced(qsizetype pos, qsizetype n) const

Возвращает строку, содержащую n символов из этой строки, начиная с позиции pos.

Примечание: Поведение не определено, когда pos < 0, n < 0 или pos + n > size().

QString x = "Nine pineapples";
QString y = x.sliced(5, 4);            // y == "pine"
QString z = x.sliced(5);               // z == "pineapples"

Эта функция была добавлена в Qt 6.0.

См. также first(), last(), chopped(), chop() и truncate().

[since 6.0] QString QString::sliced(qsizetype pos) const

Это перегруженная функция.

Возвращает строку, содержащую часть этой строки, начинающуюся с позиции pos и продолжающуюся до её конца.

Примечание: Поведение не определено, когда pos < 0 или pos > size().

Эта функция была добавлена в Qt 6.0.

См. также first(), last(), sliced(), chopped(), chop() и truncate().

[since 5.14] QStringList QString::split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Разделяет строку на подстроки там, где встречается sep, и возвращает список этих строк. Если sep нигде не совпадает со строкой, split() возвращает список, содержащий только эту строку.

cs определяет, будет ли совпадение с sep чувствительным к регистру или нет.

Если behavior равен Qt::SkipEmptyParts, пустые элементы не отображаются в результате. По умолчанию пустые элементы сохраняются.

Пример:

QString str = QStringLiteral("a,,b,c");

QStringList list1 = str.split(QLatin1Char(','));
// list1: [ "a", "", "b", "c" ]

QStringList list2 = str.split(QLatin1Char(','), Qt::SkipEmptyParts);
// list2: [ "a", "b", "c" ]

Если sep пустая, split() возвращает пустую строку, за которой следуют каждый символ строки, за которым следует ещё одна пустая строка:

QString str = "abc";
auto parts = str.split(QString());
// parts: {"", "a", "b", "c", ""}

Чтобы понять это поведение, вспомните, что пустая строка совпадает везде, поэтому вышеприведённое качественно то же самое, что и:

QString str = "/a/b/c/";
auto parts = str.split(QLatin1Char('/'));
// parts: {"", "a", "b", "c", ""}

Эта функция была добавлена в Qt 5.14.

См. также QStringList::join() и section().

[since 5.14] QStringList QString::split(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.14.

[since 5.14] QStringList QString::split(const QRegularExpression &re, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const

Это перегруженная функция.

Разделяет строку на подстроки там, где совпадает регулярное выражение re, и возвращает список этих строк. Если re нигде не совпадает со строкой, split() возвращает список, содержащий только эту строку.

Вот пример, где мы извлекаем слова в предложении, используя один или несколько пробелов в качестве разделителя:

QString str;
QStringList list;

str = "Some  text\n\twith  strange whitespace.";
list = str.split(QRegularExpression("\\s+"));
// list: [ "Some", "text", "with", "strange", "whitespace." ]

Вот аналогичный пример, но на этот раз мы используем любую последовательность символов, не являющихся словами, в качестве разделителя:

str = "This time, a normal English sentence.";
list = str.split(QRegularExpression("\\W+"), Qt::SkipEmptyParts);
// list: [ "This", "time", "a", "normal", "English", "sentence" ]

Вот третий пример, где мы используем утверждение нулевой длины \b (граница слова), чтобы разбить строку на чередующуюся последовательность токенов, не являющихся словами, и токенов, являющихся словами:

str = "Now: this sentence fragment.";
list = str.split(QRegularExpression("\\b"));
// list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ]

Эта функция была добавлена в Qt 5.14.

См. также QStringList::join() и section().

void QString::squeeze()

Освобождает память, не необходимую для хранения данных символов.

Единственная цель этой функции — предоставить способ тонкой настройки использования памяти QString. Как правило, вам редко понадобится вызывать эту функцию.

См. также reserve() и capacity().

bool QString::startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает true если строка начинается с s; в противном случае возвращает false.

Если cs равен Qt::CaseSensitive (по умолчанию), поиск чувствителен к регистру; в противном случае поиск нечувствителен к регистру.

QString str = "Bananas";
str.startsWith("Ban");     // returns true
str.startsWith("Car");     // returns false

См. также endsWith().

[since 5.10] bool QString::startsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Это перегруженная функция.

Возвращает true если строка начинается с представления строки str; в противном случае возвращает false.

Если cs равен Qt::CaseSensitive (по умолчанию), поиск чувствителен к регистру; в противном случае поиск нечувствителен к регистру.

Эта функция была добавлена в Qt 5.10.

См. также endsWith().

bool QString::startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает startsWith().

bool QString::startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Эта функция перегружает startsWith().

Возвращает true если строка начинается с c; в противном случае возвращает false.

void QString::swap(QString &other)

Меняет местами строки other и эту строку. Эта операция очень быстрая и никогда не терпит неудачу.

[since 5.2] CFStringRef QString::toCFString() const

Создаёт CFString из QString.

Вызывающая сторона владеет CFString и отвечает за его освобождение.

Примечание: эта функция доступна только на macOS и iOS.

Эта функция была добавлена в Qt 5.2.

QString QString::toCaseFolded() const

Возвращает эквивалент строки в нижнем регистре с учётом слияния регистров. Для большинства символов Юникода это то же самое, что toLower().

double QString::toDouble(bool *ok = nullptr) const

Возвращает строку, преобразованную в значение double.

Возвращает бесконечность, если преобразование переполняет, или 0.0, если преобразование терпит неудачу по другим причинам (например, подпоток).

Если ok не nullptr, неудача сообщается путём установки *ok в false, а успех — путём установки *ok в true.

QString str = "1234.56";
double val = str.toDouble();   // val == 1234.56

Предупреждение: Содержимое QString может содержать только допустимые числовые символы, включая знак плюс/минус, символ e в научной записи и десятичную точку. Включение единицы или дополнительных символов приводит к ошибке преобразования.

bool ok;
double d;

d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456

d = QString( "1234.56e-02 Volt" ).toDouble(&ok); // ok == false, d == 0

Преобразование строки всегда происходит в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toDouble()

d = QString( "1234,56" ).toDouble(&ok); // ok == false
d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56

По историческим причинам эта функция не обрабатывает разделители тысяч. Если вам нужно преобразовать такие числа, используйте QLocale::toDouble().

d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false
d = QString( "1234567.89" ).toDouble(&ok); // ok == true

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), QLocale::setDefault(), QLocale::toDouble(), и trimmed().

float QString::toFloat(bool *ok = nullptr) const

Возвращает строку, преобразованную в значение float.

Возвращает бесконечность, если преобразование переполнило, или 0.0, если преобразование завершилось неудачно по другим причинам (например, подпотоковая обработка).

Если ok не nullptr, неудача сообщается путём установки *ok в false, а успех — путём установки *ok в true.

Предупреждение: Содержимое QString может содержать только допустимые числовые символы, включая знак плюс/минус, символ e в научной записи и десятичную точку. Включение единицы или дополнительных символов приводит к ошибке преобразования.

Преобразование строки всегда происходит в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toFloat()

По историческим причинам эта функция не обрабатывает разделители тысяч. Если вам нужно преобразовать такие числа, используйте QLocale::toFloat().

Пример:

QString str1 = "1234.56";
str1.toFloat();             // returns 1234.56

bool ok;
QString str2 = "R2D2";
str2.toFloat(&ok);          // returns 0.0, sets ok to false

QString str3 = "1234.56 Volt";
str3.toFloat(&ok);          // returns 0.0, sets ok to false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toDouble(), toInt(), QLocale::toFloat(), и trimmed().

[since 5.0] QString QString::toHtmlEscaped() const

Преобразует строку простого текста в HTML-строку, заменяя HTML-спецсимволы <, >, &, и " на HTML-сущности.

Пример:

QString plain = "#include <QtCore>"
QString html = plain.toHtmlEscaped();
// html == "#include &lt;QtCore&gt;"

Эта функция была добавлена в Qt 5.0.

int QString::toInt(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в int с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование завершается неудачно.

Если ok не nullptr, неудача сообщается путём установки *ok в false, а успех — путём установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с «0x», используется основание 16; если строка начинается с «0», используется основание 8; в противном случае используется основание 10.

Преобразование строки всегда происходит в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toInt()

Пример:

QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16);       // hex == 255, ok == true
int dec = str.toInt(&ok, 10);       // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toUInt(), toDouble(), и QLocale::toInt().

QByteArray QString::toLatin1() const

Возвращает представление строки в формате Latin-1 в виде QByteArray.

Возвращаемый массив байтов неопределён, если строка содержит не-Latin1 символы. Эти символы могут быть подавлены или заменены вопросительным знаком.

См. также fromLatin1(), toUtf8(), toLocal8Bit(), и QStringEncoder.

QByteArray QString::toLocal8Bit() const

Возвращает локальное 8-битное представление строки в виде QByteArray. Возвращаемый массив байтов неопределён, если строка содержит символы, не поддерживаемые локальным 8-битным кодированием.

В системах Unix это эквивалентно toUtf8(), в Windows используется текущая кодовая страница системы.

Если эта строка содержит символы, которые не могут быть закодированы в локальной кодировке, возвращаемый массив байтов неопределён. Эти символы могут быть подавлены или заменены другим.

См. также fromLocal8Bit(), toLatin1(), toUtf8(), и QStringEncoder.

long QString::toLong(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в long с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование завершается неудачно.

Если ok не nullptr, неудача сообщается путём установки *ok в false, а успех — путём установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с «0x», используется основание 16; если строка начинается с «0», используется основание 8; в противном случае используется основание 10.

Преобразование строки всегда происходит в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toLongLong()

Пример:

QString str = "FF";
bool ok;

long hex = str.toLong(&ok, 16);     // hex == 255, ok == true
long dec = str.toLong(&ok, 10);     // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toULong(), toInt(), и QLocale::toInt().

qlonglong QString::toLongLong(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в long long с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование завершается неудачно.

Если ok не nullptr, неудача сообщается путём установки *ok в false, а успех — путём установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с «0x», используется основание 16; если строка начинается с «0», используется основание 8; в противном случае используется основание 10.

Преобразование строки всегда происходит в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toLongLong()

Пример:

QString str = "FF";
bool ok;

qint64 hex = str.toLongLong(&ok, 16);      // hex == 255, ok == true
qint64 dec = str.toLongLong(&ok, 10);      // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toULongLong(), toInt(), и QLocale::toLongLong().

QString QString::toLower() const

Возвращает копию строки в нижнем регистре.

QString str = "The Qt PROJECT";
str = str.toLower();        // str == "the qt project"

Преобразование регистра всегда происходит в локали 'C'. Для зависящего от локали преобразования в нижний регистр используйте QLocale::toLower()

См. также toUpper() и QLocale::toLower().

[since 5.2] NSString *QString::toNSString() const

Создаёт NSString из QString.

NSString освобождается автоматически.

Примечание: Эта функция доступна только на macOS и iOS.

Эта функция была добавлена в Qt 5.2.

short QString::toShort(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в short с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование завершается неудачно.

Если ok не nullptr, неудача сообщается путём установки *ok в false, а успех — путём установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с «0x», используется основание 16; если строка начинается с «0», используется основание 8; в противном случае используется основание 10.

Преобразование строки всегда происходит в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toShort()

Пример:

QString str = "FF";
bool ok;

short hex = str.toShort(&ok, 16);   // hex == 255, ok == true
short dec = str.toShort(&ok, 10);   // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toUShort(), toInt(), и QLocale::toShort().

std::string QString::toStdString() const

Возвращает объект std::string с данными, содержащимися в этом QString. Данные Юникода преобразуются в символы 8-битной кодировки с использованием функции toUtf8().

Этот метод в основном используется для передачи QString функции, которая принимает объект std::string.

См. также toLatin1(), toUtf8(), toLocal8Bit(), и QByteArray::toStdString().

[since 5.5] std::u16string QString::toStdU16String() const

Возвращает объект std::u16string с данными, содержащимися в этом QString. Данные Юникода идентичны данным, возвращаемым методом utf16().

Эта функция была добавлена в Qt 5.5.

См. также utf16(), toStdWString(), и toStdU32String().

[since 5.5] std::u32string QString::toStdU32String() const

Возвращает объект std::u32string с данными, содержащимися в этом QString. Данные Юникода идентичны данным, возвращаемым методом toUcs4().

Эта функция была добавлена в Qt 5.5.

См. также toUcs4(), toStdWString() и toStdU16String().

std::wstring QString::toStdWString() const

Возвращает объект std::wstring с данными, содержащимися в этом QString. std::wstring закодирован в utf16 на платформах, где wchar_t имеет ширину 2 байта (например, Windows), и в ucs4 на платформах, где wchar_t имеет ширину 4 байта (большинство Unix-систем).

Этот метод в основном полезен для передачи QString в функцию, которая принимает объект std::wstring.

См. также utf16(), toLatin1(), toUtf8(), toLocal8Bit(), toStdU16String() и toStdU32String().

uint QString::toUInt(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в unsigned int с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование не выполняется.

Если ok не nullptr, ошибка сообщается путем установки *ok в false, а успех - путем установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с "0x", используется основание 16; если строка начинается с "0", используется основание 8; в противном случае используется основание 10.

Преобразование строк всегда выполняется в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toUInt().

Пример:

QString str = "FF";
bool ok;

uint hex = str.toUInt(&ok, 16);     // hex == 255, ok == true
uint dec = str.toUInt(&ok, 10);     // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toInt() и QLocale::toUInt().

ulong QString::toULong(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в unsigned long с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование не выполняется.

Если ok не nullptr, ошибка сообщается путем установки *ok в false, а успех - путем установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с "0x", используется основание 16; если строка начинается с "0", используется основание 8; в противном случае используется основание 10.

Преобразование строк всегда выполняется в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toULongLong().

Пример:

QString str = "FF";
bool ok;

ulong hex = str.toULong(&ok, 16);   // hex == 255, ok == true
ulong dec = str.toULong(&ok, 10);   // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number() и QLocale::toUInt().

qulonglong QString::toULongLong(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в unsigned long long с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование не выполняется.

Если ok не nullptr, ошибка сообщается путем установки *ok в false, а успех - путем установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с "0x", используется основание 16; если строка начинается с "0", используется основание 8; в противном случае используется основание 10.

Преобразование строк всегда выполняется в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toULongLong().

Пример:

QString str = "FF";
bool ok;

quint64 hex = str.toULongLong(&ok, 16);    // hex == 255, ok == true
quint64 dec = str.toULongLong(&ok, 10);    // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toLongLong() и QLocale::toULongLong().

ushort QString::toUShort(bool *ok = nullptr, int base = 10) const

Возвращает строку, преобразованную в unsigned short с основанием base, которое по умолчанию равно 10 и должно быть в диапазоне от 2 до 36 или 0. Возвращает 0, если преобразование не выполняется.

Если ok не nullptr, ошибка сообщается путем установки *ok в false, а успех - путем установки *ok в true.

Если base равно 0, используется соглашение языка C: если строка начинается с "0x", используется основание 16; если строка начинается с "0", используется основание 8; в противном случае используется основание 10.

Преобразование строк всегда выполняется в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toUShort().

Пример:

QString str = "FF";
bool ok;

ushort hex = str.toUShort(&ok, 16);     // hex == 255, ok == true
ushort dec = str.toUShort(&ok, 10);     // dec == 0, ok == false

Эта функция игнорирует начальные и конечные пробелы.

См. также number(), toShort() и QLocale::toUShort().

QList<uint> QString::toUcs4() const

Возвращает представление строки UCS-4/UTF-32 в виде QList<uint>.

UCS-4 — это кодировка Юникода, поэтому она без потерь. Все символы из этой строки будут закодированы в UCS-4. Любая некорректная последовательность кодовых единиц в этой строке заменяется замещающим символом Юникода (QChar::ReplacementCharacter, который соответствует U+FFFD).

Возвращаемый список не завершается символом '\0'.

См. также fromUtf8(), toUtf8(), toLatin1(), toLocal8Bit(), QStringEncoder, fromUcs4() и toWCharArray().

QString QString::toUpper() const

Возвращает копию строки в верхнем регистре.

QString str = "TeXt";
str = str.toUpper();        // str == "TEXT"

Преобразование регистра всегда выполняется в локали 'C'. Для преобразования, зависящего от локали, используйте QLocale::toUpper().

См. также toLower() и QLocale::toLower().

QByteArray QString::toUtf8() const

Возвращает представление строки в UTF-8 в виде QByteArray.

UTF-8 — это кодировка Юникода и может представлять все символы в строке Юникода, такой как QString.

См. также fromUtf8(), toLatin1(), toLocal8Bit() и QStringEncoder.

qsizetype QString::toWCharArray(wchar_t *array) const

Заполняет array данными, содержащимися в этом объекте QString. Массив закодирован в UTF-16 на платформах, где wchar_t имеет ширину 2 байта (например, Windows), и в UCS-4 на платформах, где wchar_t имеет ширину 4 байта (большинство Unix-систем).

array должен быть выделен вызывающей стороной и содержать достаточно места для хранения всей строки (выделение массива с длиной, равной длине строки, всегда достаточно).

Эта функция возвращает фактическую длину строки в array.

Примечание: Эта функция не добавляет нулевой символ в массив.

См. также utf16(), toUcs4(), toLatin1(), toUtf8(), toLocal8Bit(), toStdWString() и QStringView::toWCharArray().

QString QString::trimmed() const

Возвращает строку, из которой удалены начальные и конечные пробелы.

Пробелы означают любой символ, для которого QChar::isSpace() возвращает true. Это включает ASCII-символы '\t', '\n', '\v', '\f', '\r' и ' '.

Пример:

QString str = "  lots\t of\nwhitespace\r\n ";
str = str.trimmed();
// str == "lots\t of\nwhitespace"

В отличие от simplified(), trimmed() оставляет внутренние пробелы без изменений.

См. также simplified().

void QString::truncate(qsizetype position)

Обрезает строку в заданной позиции position.

Если указанный индекс position выходит за пределы конца строки, ничего не происходит.

Пример:

QString str = "Vladivostok";
str.truncate(4);
// str == "Vlad"

Если position отрицательный, он эквивалентен передаче нуля.

См. также chop(), resize(), first() и QStringView::truncate().

const QChar *QString::unicode() const

Возвращает представление строки в Юникоде. Результат остается действительным до тех пор, пока строка не изменяется.

Примечание: Возвращаемая строка может не завершаться символом '\0'. Используйте size(), чтобы определить длину массива.

См. также setUnicode(), utf16() и fromRawData().

const ushort *QString::utf16() const

Возвращает QString в виде завершаемого символом '\0' массива беззнаковых целых чисел с типом ushort. Результат остается действительным до тех пор, пока строка не изменяется.

Возвращаемая строка находится в порядке байтов хост-машины.

См. также setUtf16() и unicode().

[static, since 5.5] QString QString::vasprintf(const char *cformat, va_list ap)

Эквивалентный метод asprintf(), но принимает va_list ap вместо списка переменных аргументов. См. документацию asprintf() для объяснения cformat.

Этот метод не вызывает макрос va_end, вызывающая сторона отвечает за вызов va_end для ap.

Эта функция была добавлена в Qt 5.5.

См. также asprintf().

bool QString::operator!=(const char *other) const

Эта функция перегружает оператор!=().

Указатель other типа const char преобразуется в QString с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator!=(const QByteArray &other) const

Эта функция перегружает оператор!=().

Массив байтов other преобразуется в QString с помощью функции fromUtf8(). Если в массиве байтов содержатся символы NULL ('\0'), они будут включены в преобразование.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

QString &QString::operator+=(const QString &other)

Добавляет строку other к концу этой строки и возвращает ссылку на эту строку.

Пример:

QString x = "free";
QString y = "dom";
x += y;
// x == "freedom"

Обычно эта операция выполняется очень быстро (постоянное время), потому что QString предварительно выделяет дополнительное место в конце данных строки, чтобы она могла расти без повторного выделения всей строки каждый раз.

См. также append() и prepend().

QString &QString::operator+=(QChar ch)

Эта функция перегружает оператор+=().

Добавляет символ ch к строке.

[since 6.0] QString &QString::operator+=(QStringView str)

Эта функция перегружает оператор+=().

Добавляет фрагмент строки str к этой строке.

Эта функция была добавлена в Qt 6.0.

QString &QString::operator+=(QLatin1String str)

Эта функция перегружает оператор+=().

Добавляет строку Latin-1 str к этой строке.

QString &QString::operator+=(const char *str)

Эта функция перегружает оператор+=().

Добавляет строку str к этой строке. Указатель const char преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить эту функцию, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

QString &QString::operator+=(const QByteArray &ba)

Эта функция перегружает оператор+=().

Добавляет массив байтов ba к этой строке. Массив байтов преобразуется в Unicode с помощью функции fromUtf8(). Если в массиве байтов ba содержатся символы NULL ('\0'), они будут включены в преобразование.

Вы можете отключить эту функцию, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator<(const char *other) const

Возвращает true если эта строка лексически меньше строки other. В противном случае возвращает false.

Эта функция перегружает оператор<().

Указатель other типа const char преобразуется в QString с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator<(const QByteArray &other) const

Эта функция перегружает оператор<().

Массив байтов other преобразуется в QString с помощью функции fromUtf8(). Если в массиве байтов содержатся символы NULL ('\0'), они будут включены в преобразование.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator<=(const char *other) const

Эта функция перегружает оператор<=().

Указатель other типа const char преобразуется в QString с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator<=(const QByteArray &other) const

Эта функция перегружает оператор<=().

Массив байтов other преобразуется в QString с помощью функции fromUtf8(). Если в массиве байтов содержатся символы NULL ('\0'), они будут включены в преобразование.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

QString &QString::operator=(QChar ch)

Эта функция перегружает оператор=().

Устанавливает строку, содержащую единственный символ ch.

QString &QString::operator=(QLatin1String str)

Эта функция перегружает оператор=().

Присваивает строку Latin-1 str этой строке.

QString &QString::operator=(const char *str)

Эта функция перегружает оператор=().

Присваивает str этой строке. Указатель const char преобразуется в Unicode с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII или QT_RESTRICTED_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator==(const char *other) const

Эта функция перегружает оператор==().

Указатель other типа const char преобразуется в QString с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator==(const QByteArray &other) const

Эта функция перегружает оператор==().

Массив байтов other преобразуется в QString с помощью функции fromUtf8(). Преобразование прекращается при обнаружении первого символа NULL или по достижении конца массива байтов.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

Возвращает true если эта строка лексически равна строке other. В противном случае возвращает false.

bool QString::operator>(const char *other) const

Эта функция перегружает оператор>().

Указатель other типа const char преобразуется в QString с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции приложения. Это может быть полезно, если вы хотите убедиться, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator>(const QByteArray &other) const

Эта функция перегружает оператор>().

Массив байтов other преобразуется в QString с помощью функции fromUtf8(). Если в массиве байтов встроены символы NUL ('\0'), они будут включены в преобразование.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции своих приложений. Это может быть полезно, если вы хотите гарантировать, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator>=(const char *other) const

Эта функция перегружает оператор>=().

Указатель other типа const char преобразуется в QString с помощью функции fromUtf8().

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции своих приложений. Это может быть полезно, если вы хотите гарантировать, что все отображаемые пользователю строки проходят через QObject::tr(), например.

bool QString::operator>=(const QByteArray &other) const

Эта функция перегружает оператор>=().

Массив байтов other преобразуется в QString с помощью функции fromUtf8(). Если в массиве байтов встроены символы NUL ('\0'), они будут включены в преобразование.

Вы можете отключить этот оператор, определив QT_NO_CAST_FROM_ASCII при компиляции своих приложений. Это может быть полезно, если вы хотите гарантировать, что все отображаемые пользователю строки проходят через QObject::tr(), например.

QChar &QString::operator[](qsizetype position)

Возвращает символ по указанному position в строке в виде изменяемой ссылки.

Пример:

QString str;

if (str[0] == QChar('?'))
    str[0] = QChar('_');

См. также at().

const QChar QString::operator[](qsizetype position) const

Эта функция перегружает оператор[]().

Связанные нечлены

[since 6.1] template <typename T> qsizetype erase(QString &s, const T &t)

Удаляет все элементы, которые сравниваются как равные t, из строки s. Возвращает количество удалённых элементов (если таковые имеются).

Эта функция была добавлена в Qt 6.1.

См. также erase_if.

[since 6.1] template <typename Predicate> qsizetype erase_if(QString &s, Predicate pred)

Удаляет все элементы, для которых предикат pred возвращает true, из строки s. Возвращает количество удалённых элементов (если таковые имеются).

Эта функция была добавлена в Qt 6.1.

См. также erase.

bool operator!=(const QString &s1, const QString &s2)

Возвращает true если строка s1 не равна строке s2; в противном случае возвращает false.

См. также Сравнение строк.

bool operator!=(const QString &s1, QLatin1String s2)

Возвращает true если строка s1 не равна строке s2. В противном случае возвращает false.

Эта функция перегружает оператор!=().

bool operator!=(const char *s1, const QString &s2)

Возвращает true если s1 не равен s2; в противном случае возвращает false.

Для s1 != 0, это эквивалентно compare( s1, s2 ) != 0. Обратите внимание, что никакая строка не равна s1, являющейся 0.

const QString operator+(const QString &s1, const QString &s2)

Возвращает строку, являющуюся результатом конкатенации s1 и s2.

const QString operator+(const QString &s1, const char *s2)

Возвращает строку, являющуюся результатом конкатенации s1 и s2 (s2 преобразуется в Unicode с помощью функции QString::fromUtf8() ).

См. также QString::fromUtf8().

const QString operator+(const char *s1, const QString &s2)

Возвращает строку, являющуюся результатом конкатенации s1 и s2 (s1 преобразуется в Unicode с помощью функции QString::fromUtf8() ).

См. также QString::fromUtf8().

bool operator<(const QString &s1, const QString &s2)

Эта функция перегружает оператор<().

Возвращает true если строка s1 лексикографически меньше строки s2; в противном случае возвращает false.

См. также Сравнение строк.

bool operator<(const QString &s1, QLatin1String s2)

Эта функция перегружает оператор<().

Возвращает true если s1 лексикографически меньше s2; в противном случае возвращает false.

bool operator<(QLatin1String s1, const QString &s2)

Эта функция перегружает оператор<().

Возвращает true если s1 лексикографически меньше s2; в противном случае возвращает false.

bool operator<(const char *s1, const QString &s2)

Возвращает true если s1 лексикографически меньше s2; в противном случае возвращает false. Для s1 != 0, это эквивалентно compare(s1, s2) < 0.

См. также Сравнение строк.

QDataStream &operator<<(QDataStream &stream, const QString &string)

Записывает заданную string в указанный stream.

См. также Сериализация типов данных Qt.

bool operator<=(const QString &s1, const QString &s2)

Возвращает true если строка s1 лексикографически меньше или равна строке s2; в противном случае возвращает false.

См. также Сравнение строк.

bool operator<=(const QString &s1, QLatin1String s2)

Эта функция перегружает оператор<=().

Возвращает true если s1 лексикографически меньше или равно s2; в противном случае возвращает false.

bool operator<=(QLatin1String s1, const QString &s2)

Эта функция перегружает оператор<=().

Возвращает true если s1 лексикографически меньше или равно s2; в противном случае возвращает false.

bool operator<=(const char *s1, const QString &s2)

Возвращает true если s1 лексикографически меньше или равно s2; в противном случае возвращает false. Для s1 != 0, это эквивалентно compare(s1, s2) <= 0.

См. также Сравнение строк.

bool operator==(const QString &s1, const QString &s2)

Эта функция перегружает оператор==().

Возвращает true если строка s1 равна строке s2; в противном случае возвращает false.

См. также Сравнение строк.

bool operator==(const QString &s1, QLatin1String s2)

Эта функция перегружает оператор==().

Возвращает true если s1 равно s2; в противном случае возвращает false.

bool operator==(QLatin1String s1, const QString &s2)

Эта функция перегружает оператор==().

Возвращает true если s1 равно s2; в противном случае возвращает false.

bool operator==(const char *s1, const QString &s2)

Эта функция перегружает оператор==().

Возвращает true если s1 равно s2; в противном случае возвращает false. Обратите внимание, что никакая строка не равна s1, являющейся 0.

Эквивалентно s1 != 0 && compare(s1, s2) == 0.

bool operator>(const QString &s1, const QString &s2)

Возвращает true если строка s1 лексикографически больше строки s2; в противном случае возвращает false.

См. также Сравнение строк.

bool operator>(const QString &s1, QLatin1String s2)

Эта функция перегружает оператор>().

Возвращает true если s1 лексикографически больше s2; в противном случае возвращает false.

bool operator>(QLatin1String s1, const QString &s2)

Эта функция перегружает оператор>().

END_OF_DOCUMENT_MARKER

Возвращает true, если s1 лексически больше s2; в противном случае возвращает false.

bool operator>(const char *s1, const QString &s2)

Возвращает true, если s1 лексически больше s2; в противном случае возвращает false. Эквивалентно compare(s1, s2) > 0.

См. также Сравнение строк.

bool operator>=(const QString &s1, const QString &s2)

Возвращает true, если строка s1 лексически больше или равна строке s2; в противном случае возвращает false.

См. также Сравнение строк.

bool operator>=(const QString &s1, QLatin1String s2)

Эта функция перегружает оператор>=().

Возвращает true, если s1 лексически больше или равна s2; в противном случае возвращает false.

bool operator>=(QLatin1String s1, const QString &s2)

Эта функция перегружает оператор>=().

Возвращает true, если s1 лексически больше или равна s2; в противном случае возвращает false.

bool operator>=(const char *s1, const QString &s2)

Возвращает true, если s1 лексически больше или равна s2; в противном случае возвращает false. Для s1 != 0, это эквивалентно compare(s1, s2) >= 0.

См. также Сравнение строк.

QDataStream &operator>>(QDataStream &stream, QString &string)

Читает строку из указанного stream в заданную string.

См. также Сериализация типов данных Qt.

Документация макросов

QStringLiteral(str)

Макрос генерирует данные для QString из строкового литерала str во время компиляции. Создание QString в этом случае бесплатно, а сгенерированные данные строки хранятся в только для чтения сегменте скомпилированного объектного файла.

Если у вас есть код, который выглядит так:

// hasAttribute takes a QString argument
if (node.hasAttribute("http-contents-length")) //...

то будет создан временный QString для передачи в качестве параметра функции hasAttribute. Это может быть довольно дорого, так как это включает выделение памяти и копирование/преобразование данных в внутреннее кодирование QString.

Эти затраты можно избежать, используя QStringLiteral вместо него:

if (node.hasAttribute(QStringLiteral(u"http-contents-length"))) //...

В этом случае внутренние данные QString будут сгенерированы во время компиляции; никакого преобразования или выделения не произойдёт во время выполнения.

Использование QStringLiteral вместо обычного C++ строкового литерала может значительно ускорить создание экземпляров QString из данных, известных во время компиляции.

Примечание: QLatin1String может быть ещё эффективнее, чем QStringLiteral, когда строка передаётся в функцию, имеющую перегрузку, принимающую QLatin1String, и эта перегрузка избегает преобразования в QString. Например, QString::operator==() может сравнивать непосредственно с QLatin1String:

if (attribute.name() == QLatin1String("http-contents-length")) //...

Примечание: У некоторых компиляторов есть ошибки кодирования строк, содержащих символы за пределами набора символов US-ASCII. В таких случаях необходимо предварять строку префиксом u. В противном случае это необязательно.

См. также QByteArrayLiteral.

QT_NO_CAST_FROM_ASCII

Отключает автоматические преобразования из 8-битных строк (char *) в Unicode QStrings, а также из 8-битных типов char (char и unsigned char) в QChar.

См. также QT_NO_CAST_TO_ASCII, QT_RESTRICTED_CAST_FROM_ASCII и QT_NO_CAST_FROM_BYTEARRAY.

QT_NO_CAST_TO_ASCII

Отключает автоматическое преобразование из QString в 8-битные строки (char *).

См. также QT_NO_CAST_FROM_ASCII, QT_RESTRICTED_CAST_FROM_ASCII и QT_NO_CAST_FROM_BYTEARRAY.

QT_RESTRICTED_CAST_FROM_ASCII

Отключает большинство автоматических преобразований из исходных литералов и 8-битных данных в unicode QStrings, но разрешает использование конструкторов QChar(char) и QString(const char (&ch)[N], а также оператора присваивания QString::operator=(const char (&ch)[N]). Это даёт большинство преимуществ по обеспечению безопасности типов QT_NO_CAST_FROM_ASCII, но не требует от пользовательского кода обертывать символы и строковые литералы в QLatin1Char, QLatin1String или аналогичные.

Использование этого макроса вместе с исходными строками за пределами диапазона 7-битных символов, нелитералами или литералами с вложенными нулевыми символами не определено.

См. также QT_NO_CAST_FROM_ASCII и QT_NO_CAST_TO_ASCII.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qstring.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API