Qt5 как поместить qstring в структуру
Перейти к содержимому

Qt5 как поместить qstring в структуру

  • автор:

Русские Блоги

Класс QString использует технологию неявного совместного использования для объединения почтовых рассылок с глубоким копированием и мелким копированием.Неявное совместное использование может снизить коэффициент использования памяти и ресурсов ЦП и повысить эффективность работы с ресурсами. Это делает более эффективным использование значений, передаваемых в функциях (таких как параметры, возвращаемые значения).
Неявная совместная работа выглядит следующим образом:

QString str2 = str1; // Назначьте строковый объект str1 другой строке str2, в это время str2 = "data". При присвоении значения str2 произойдет неглубокая копия, в результате чего оба объекта QString будут указывать на одну и ту же структуру данных.

str2 [3] = ‘e’; // Изменение объекта QString str2 приведет к глубокой копии, в результате чего объект str2 будет указывать на новую структуру данных, отличную от структуры данных, на которую указывает str1, и изменит данные, на которые указывает исходная str1 Структура, установите его счетчик ссылок на 1 (в это время только объект QString str1 указывает на структуру данных

str2 [0] = ‘f’; // Дальнейшее изменение объекта QString str2, но эта операция не вызовет копирования в какой-либо форме, потому что структура данных, на которую указывает str2, не используется совместно. В настоящее время str2 = "fate", str1 = "Данные"

str1 = str2; // Присваиваем str2 к str1. На этом этапе str1 изменяет значение счетчика ссылок структуры данных на 0, то есть нет объекта QString для использования этих данных.

Неявно разделяемые классы, поддерживаемые Qt, также включают: QByteArray, QBrush, QPen, QPalette, QBitmap, QImage, QPixmap, QCursor, QDir, QFont, QVariant и т. Д.

Использование класса QString:

Используйте функции-члены, чтобы определить, является ли объект QString пустой строкой:

QString перегружен операторами + и + =. Эти два оператора могут соединять две строки вместе. Следующим образом:

Результат выполнения: str1: "birthday"; str2: "abcdefg";

Функция QString :: append () имеет ту же функцию, что и оператор "+ =", который может добавить другую строку в конец строки, как показано ниже:

Результат выполнения: str1 — "Добро пожаловать!"

Другая функция для объединения строк — QString :: sprintf (). Определение формата, поддерживаемое этой функцией, такое же, как определенное функцией sprintf () в библиотеке C ++. Следующим образом:

Qt также предоставляет другой удобный способ комбинирования строк, используя функцию QString :: arg (). Перегрузка этой функции может обрабатывать многие типы данных. Кроме того, у некоторых перегруженных функций есть дополнительные параметры для управления шириной поля, основанием числа или точностью числа с плавающей запятой. Обычно, по сравнению с расплывчатой ​​QString :: sprintf (), функция QString :: arg () является решением для сравнения чисел, потому что она типобезопасна, полностью поддерживает Unicode и позволяет изменять порядок параметров "% n". Следующим образом:

Текущий результат: str is «Джон родился в 1998 году».

QString предоставляет некоторые другие методы объединения строк, включая следующие:
(1) функция insert (): вставить другую строку в определенную позицию исходной строки
(2) функция prepend (): вставить другую строку в начало исходной строки.
(3) функция replace (): заменяет некоторые символы в исходной строке указанной строкой.

Во многих случаях очень полезно удалить пробелы на обоих концах строки (пустые символы включают символ возврата каретки "\ n", символ перевода строки "\ r", символ табуляции "\ t" и пробел "" и т. Д.), Например получение пользовательского ввода Счет.
(1) Функция QString :: trimmed (): удаляет пустые символы с обоих концов строки.
(2) Функция QString :: simpleified (): Удалите пустые символы с обоих концов строки и используйте один пустой символ "" для замены пустых символов в строке. Следующим образом:

Результат выполнения: str — "Добро пожаловать \ n к вам!"

Есть много способов запросить строковые данные, как показано ниже.
(1) Функция QString :: startWith () определяет, начинается ли строка с определенной строки. Эта функция имеет два параметра. Первый параметр указывает строку, а второй параметр указывает, учитывается ли регистр (по умолчанию он чувствителен к регистру), как показано ниже:

QString str="Welcome to you! ",
str. startWith ("Welcome", Qt: CaseSensitive); // возвращаем истину
str. startWith ("you", Qt: CaseSensitive); // возвращаем false

(2) Функция QString ::ndsWith () похожа на QString :: startWith (), эта функция определяет, заканчивается ли строка определенной строкой.
(3) Функция QString :: contains () определяет, появилась ли указанная строка, как показано ниже:

QString str=" Welcome to you! ",
str. contains ("Welcome", Qt.CaseSensitive); // возвращаем true

(4) Часто используется функция сравнения двух строк QString предоставляет множество методов сравнения. ①operator <(const QString &): Сравните, меньше ли строка, чем другая строка. Если это так, возвращается истина.
②operator <= (const QString &): сравнить, меньше ли строка другой строке или равна ей. Если это так, возвращается истина.
③operator == (const QString &): сравнить, равны ли две строки. Если они равны, верните true.
④operator> = (const QString &): сравнивает, больше ли строка или равна другой строке. Если это так, возвращается истина.
⑤localeAwareCompare (const QString &, const QString &): статическая функция, сравнивает две строки до и после. Если предыдущая строка меньше, чем следующая строка, возвращается отрицательное целочисленное значение; если оно равно, возвращается 0; если больше чем, возвращается положительное целочисленное значение. Сравнение этой функции основано на наборе символов локали и зависит от платформы.
⑥compare (const QString &, const QString &, Qt :: CaseSensitivity): эта функция может указать, следует ли выполнять сравнение регистра, и сравнение регистра полностью основано на значении кода Unicode символа. И это очень быстро, возвращаемое значение похоже на функцию localeAwareCompare ().

(1) Функция QString :: tolnt () преобразует строку в целочисленное значение. Подобные функции включают toDouble (), toFloat (), toLong (), toLongLong () и т. Д. Вот пример, иллюстрирующий его использование:

QString str = "125"; // Инициализируем строку "125"
bool ok;
int hex=str.toInt(&ok, 16); //ok=true,hex=293
int dec=str.tolnt(&ok,10); //ok=true,dec=125

Среди них int hex = str.tolnt (& ok, 16): вызвать функцию QString :: tolnt () для преобразования строки в целочисленное значение. Функция QString :: tolnt () имеет два параметра.

(2) Функция преобразования набора кодировки символов, предоставленного QString, вернет версию QByteArray const char *, то есть конструктор QByteArray (const char) Сконструированный объект QByteArray.
Класс QByteArray имеет байтовый массив, в котором могут храниться необработанные байты или традиционная 8-битная строка, оканчивающаяся на «\ 0». В Qt использование QByteArray лучше, чем использование const char
Более удобно, и QByteArray также поддерживает неявное совместное использование. Есть несколько функций преобразования.
①toAscii (): возвращает 8-битную строку в кодировке ASCII.
②toLatin1 (): возвращает 8-битную строку в кодировке Latin-1 (ISO8859-1).
③toUtf8 (): возвращает 8-битную строку в кодировке UTF-8 (UTF-8 является расширенным набором кода ASCII, он поддерживает весь набор символов Unicode).
④oLocal8Bit (): возвращает 8-битную строку системной локальной (языковой) кодировки.

Следующие примеры иллюстрируют его использование:

из их,
(a) QByteArray ba = str.toAscii (): используйте функцию QString.:toAsci () для преобразования строки в кодировке Unicode в строку кода ASCII и сохранения ее в объекте QByteArray. ба
(b) qDebug () << ba: используйте функцию qDebug () для вывода преобразованной строки (qDebug () поддерживает вывод объектов Qt).
© ba.append ("Hello, World!"): используйте функцию QByteArray.append () для добавления строки.

Строка NULL — это строковый объект QString, созданный с использованием конструктора QString по умолчанию или конструктора с параметром «(const char *) 0», а пустая строка — это строка с размером 0. Строка NULL должна быть пустой строкой, а пустая строка не может быть строкой NULL. Например:

*QString::data()

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

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

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

const QChar *QString::data() const

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

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

QString::iterator QString::end()

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

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

QString::const_iterator QString::end() константа

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

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

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

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

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

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

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

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

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

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 . If size отличается от -1 (по умолчанию),строка изменяет размер до size beforehand.

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

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

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

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

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

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

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

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

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

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

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

[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 .

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

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

[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, содержащую копию string NSString.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

If size это -1 (по умолчанию), unicode должен быть \0′-терминирован.

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

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

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

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

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

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

[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 (ISO-10646-UTF-16 encoded).

If size это -1 (по умолчанию), unicode должен быть \0′-терминирован.

Эта функция проверяет наличие знака байт-ордера (BOM).Если она отсутствует,то принимается порядок байт.

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

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

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

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

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

If size это -1 (по умолчанию),а string должны быть ‘\0’-закончены.

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

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

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

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

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

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

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

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

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

QString в QVector

QString в QVector
Здравствуйте. У меня был файл матрица такого типа.

QMap<int, QVector<float>> копирование QVector<float> в другой вектор
Добрый вечер. У меня есть функция FaceSearchDB. Я хочу копировать значения из vectorа в QMap в.

QFile::rename(QString name1, QString name2) не работает под Win
Добрый день! Столкнулся с проблемой: QFile::rename(QString name1, QString name2) не работает под.

Лучший ответСообщение было отмечено Murad93 как решение

Решение

Cтрока: Как сконвертировать QString в const QString?
Доброго времени суток. Как сконвертировать QString в const QString

QList <QPair <QString, QString> > — сортировка пузырьком
Возможно ли? =) Есть список городов с их идентификационным номером, например.

Поиск в QMap<QString, QString> по регекспу
Есть QMap&lt;QString, QString&gt;. Есть некоторое регулярное выражение, по которому требуется найти все.

Std::vector/QVector в классе или std::vector/QVector классов?
Доброе время суток! Собственно вопрос в самой теме, есть некий класс class WorkJornal <.

Qt5 как поместить qstring в структуру

Qt, передающий QString в конструктор структуры, не работает

Я не кодировал C ++ уже несколько лет, но мне кажется, что я неправильно передаю строку, и мне нужно иметь некоторое кунг-фу, связанное с передачей по ссылке, указателями и копированием и записью.

Теория есть, но мои практические навыки меня сегодня ужасно подводят. Кто-нибудь может помочь?

задан 07 мая ’13, 14:05

Как проверить, что он не работает? — Joseph Mansfield

Я проверяю, устанавливая точки останова в коде и проверяя переменные при отладке. — josef.van.niekerk

Хорошо, проблема не в строке hidData->append. — josef.van.niekerk

Не имеет отношения к этой конкретной проблеме, но вы можете исправить эту утечку памяти; вы без необходимости создаете объект с new , копируя его, а затем отбрасывая указатель. Пытаться hidData->append(HidItem(«USAGE_PAGE, 1)) вместо. — Mike Seymour

@josef.van.niekerk: Кроме того, hidData вероятно должен быть QVector объект, а не указатель. Лучше избегать new если вам это действительно не нужно. — Mike Seymour

1 ответы

Работает для меня:

Одна вещь, которую вы должны изменить, это подпись HidItem конструктор, так что он ожидает константную ссылку вместо объекта:

Это позволяет избежать ненужного создания временных объектов. Но тем не менее, ваш подход также работает хорошо.

Настоящая проблема заключается в неправильном использовании конструктора QVector:

добавляет hidItem как элемент #11, так как QVector уже содержит 10 элементов после создания.

(и рассмотреть замечания относительно new @Майк Сеймур).

ответ дан 07 мая ’13, 14:05

Спасибо, Андреас, я только что понял, что моя проблема связана с hidData->append(*(hidItem)); линия. Когда я пытаюсь получить данные, используя, например, hidData->at(0).name, я ничего не получаю. — Йозеф Ван Никерк

Спасибо за совет qDebug(), не знал, что вы можете это сделать. �� — Йозеф Ван Никерк

Вау, спасибо! Мой C++ не только заржавел за эти годы, я думаю, что на нем росла плесень. D — Йозеф Ван Никерк

@josef.van.niekerk Нет проблем — вы недавно программировали на Java? java.util.Vector API ведет себя так, как вы ожидали в своем коде �� — Андреас Фестер

Я занимался Java несколько месяцев назад над проектом, над которым работал, да, но точно не помню, чтобы использовал Vector. Я помню, как использовал другие классы коллекций. — Йозеф Ван Никерк

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками c++ qt or задайте свой вопрос.

QString Class

Note: All functions in this class are reentrant.

Public Types

typedef ConstIterator
typedef Iterator
enum NormalizationForm
enum SectionFlag
flags SectionFlags
typedef const_iterator
typedef const_pointer
typedef const_reference
typedef const_reverse_iterator
typedef difference_type
typedef iterator
typedef pointer
typedef reference
typedef reverse_iterator
typedef size_type
typedef value_type

Public Functions

Static Public Members

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, const QStringRef &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString fromCFString(CFStringRef string)
QString fromLatin1(const char *str, int size = -1)
QString fromLatin1(const QByteArray &str)
QString fromLocal8Bit(const char *str, int size = -1)
QString fromLocal8Bit(const QByteArray &str)
QString fromNSString(const NSString *string)
QString fromRawData(const QChar *unicode, int 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 uint *unicode, int size = -1)
QString fromUcs4(const char32_t *str, int size = -1)
QString fromUtf8(const char *str, int size = -1)
QString fromUtf8(const QByteArray &str)
QString fromUtf16(const ushort *unicode, int size = -1)
QString fromUtf16(const char16_t *str, int size = -1)
QString fromWCharArray(const wchar_t *string, int size = -1)
int localeAwareCompare(const QString &s1, const QString &s2)
int localeAwareCompare(const QString &s1, const QStringRef &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)

Related Non-Members

bool operator!=(const QString &s1, const QString &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)
const QString operator+(char ch, const QString &s)
const QString operator+(const QString &s, char ch)
bool operator<(const QString &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 char *s1, const QString &s2)
bool operator==(const QString &s1, const QString &s2)
bool operator==(const char *s1, const QString &s2)
bool operator>(const QString &s1, const QString &s2)
bool operator>(const char *s1, const QString &s2)
bool operator>=(const QString &s1, const QString &s2)
bool operator>=(const char *s1, const QString &s2)
QDataStream & operator>>(QDataStream &stream, QString &string)

Macros

QStringLiteral(str)
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
QT_RESTRICTED_CAST_FROM_ASCII

Detailed Description

QString stores a string of 16-bit QChars, where each QChar corresponds to one UTF-16 code unit. (Unicode characters with code values above 65535 are stored using surrogate pairs, i.e., two consecutive QChars.)

Unicode is an international standard that supports most of the writing systems in use today. It is a superset of US-ASCII (ANSI X3.4-1986) and Latin-1 (ISO 8859-1), and all the US-ASCII/Latin-1 characters are available at the same code positions.

Behind the scenes, QString uses implicit sharing (copy-on-write) to reduce memory usage and to avoid the needless copying of data. This also helps reduce the inherent overhead of storing 16-bit characters instead of 8-bit characters.

In addition to QString, Qt also provides the QByteArray class to store raw bytes and traditional 8-bit ‘\0’-terminated strings. For most purposes, QString is the class you want to use. It is used throughout the Qt API, and the Unicode support ensures that your applications will be easy to translate if you want to expand your application’s market at some point. The two main cases where QByteArray is appropriate are when you need to store raw binary data, and when memory conservation is critical (like in embedded systems).

Initializing a String

One way to initialize a QString is simply to pass a const char * to its constructor. For example, the following code creates a QString of size 5 containing the data "Hello":

QString converts the const char * data into Unicode using the fromUtf8() function.

In all of the QString functions that take const char * parameters, the const char * is interpreted as a classic C-style ‘\0’-terminated string encoded in UTF-8. It is legal for the const char * parameter to be nullptr .

You can also provide string data as an array of QChars:

QString makes a deep copy of the QChar data, so you can modify it later without experiencing side effects. (If for performance reasons you don’t want to take a deep copy of the character data, use QString::fromRawData() instead.)

Another approach is to set the size of the string using resize() and to initialize the data character per character. QString uses 0-based indexes, just like C++ arrays. To access the character at a particular index position, you can use operator[](). On non-const strings, operator[]() returns a reference to a character that can be used on the left side of an assignment. For example:

For read-only access, an alternative syntax is to use the at() function:

The at() function can be faster than operator[](), because it never causes a deep copy to occur. Alternatively, use the left(), right(), or mid() functions to extract several characters at a time.

A QString can embed ‘\0’ characters (QChar::Null). The size() function always returns the size of the whole string, including embedded ‘\0’ characters.

After a call to the resize() function, newly allocated characters have undefined values. To set all the characters in the string to a particular value, use the fill() function.

QString provides dozens of overloads designed to simplify string usage. For example, if you want to compare a QString with a string literal, you can write code like this and it will work as expected:

You can also pass string literals to functions that take QStrings as arguments, invoking the QString(const char *) constructor. Similarly, you can pass a QString to a function that takes a const char * argument using the qPrintable() macro which returns the given QString as a const char * . This is equivalent to calling <QString>.toLocal8Bit().constData().

Manipulating String Data

QString provides the following basic functions for modifying the character data: append(), prepend(), insert(), replace(), and remove(). For example:

If you are building a QString gradually and know in advance approximately how many characters the QString will contain, you can call reserve(), asking QString to preallocate a certain amount of memory. You can also call capacity() to find out how much memory QString actually allocated.

The replace() and remove() functions’ first two arguments are the position from which to start erasing and the number of characters that should be erased. If you want to replace all occurrences of a particular substring with another, use one of the two-parameter replace() overloads.

A frequent requirement is to remove whitespace characters from a string (‘\n’, ‘\t’, ‘ ‘, etc.). If you want to remove whitespace from both ends of a QString, use the trimmed() function. If you want to remove whitespace from both ends and replace multiple consecutive whitespaces with a single space character within the string, use simplified().

If you want to find all occurrences of a particular character or substring in a QString, use the indexOf() or lastIndexOf() functions. The former searches forward starting from a given index position, the latter searches backward. Both return the index position of the character or substring if they find it; otherwise, they return -1. For example, here is a typical loop that finds all occurrences of a particular substring:

QString provides many functions for converting numbers into strings and strings into numbers. See the arg() functions, the setNum() functions, the number() static functions, and the toInt(), toDouble(), and similar functions.

To get an upper- or lowercase version of a string use toUpper() or toLower().

Lists of strings are handled by the QStringList class. You can split a string into a list of strings using the split() function, and join a list of strings into a single string with an optional separator using QStringList::join(). You can obtain a list of strings from a string list that contain a particular substring or that match a particular QRegExp using the QStringList::filter() function.

Querying String Data

If you want to see if a QString starts or ends with a particular substring use startsWith() or endsWith(). If you simply want to check whether a QString contains a particular character or substring, use the contains() function. If you want to find out how many times a particular character or substring occurs in the string, use count().

To obtain a pointer to the actual character data, call data() or constData(). These functions return a pointer to the beginning of the QChar data. The pointer is guaranteed to remain valid until a non-const function is called on the QString.

Comparing Strings

QStrings can be compared using overloaded operators such as operator<(), operator<=(), operator==(), operator>=(), and so on. Note that the comparison is based exclusively on the numeric Unicode values of the characters. It is very fast, but is not what a human would expect; the QString::localeAwareCompare() function is usually a better choice for sorting user-interface strings, when such a comparison is available.

On Unix-like platforms (including Linux, macOS and iOS), when Qt is linked with the ICU library (which it usually is), its locale-aware sorting is used. Otherwise, on macOS and iOS, localeAwareCompare() compares according the "Order for sorted lists" setting in the International preferences panel. On other Unix-like systems without ICU, the comparison falls back to the system library’s strcoll() , falling back when it considers strings equal to QString’s (locale-unaware) comparison, described above,

Converting Between 8-Bit Strings and Unicode Strings

QString provides the following three functions that return a const char * version of the string as QByteArray: toUtf8(), toLatin1(), and toLocal8Bit().

    () returns a Latin-1 (ISO 8859-1) encoded 8-bit string. () returns a UTF-8 encoded 8-bit string. UTF-8 is a superset of US-ASCII (ANSI X3.4-1986) that supports the entire Unicode character set through multibyte sequences. () returns an 8-bit string using the system’s local encoding.

To convert from one of these encodings, QString provides fromLatin1(), fromUtf8(), and fromLocal8Bit(). Other encodings are supported through the QTextCodec class.

As mentioned above, QString provides a lot of functions and operators that make it easy to interoperate with const char * strings. But this functionality is a double-edged sword: It makes QString more convenient to use if all strings are US-ASCII or Latin-1, but there is always the risk that an implicit conversion from or to const char * is done using the wrong 8-bit encoding. To minimize these risks, you can turn off these implicit conversions by defining the following two preprocessor symbols:

  • QT_NO_CAST_FROM_ASCII disables automatic conversions from C string literals and pointers to Unicode.
  • QT_RESTRICTED_CAST_FROM_ASCII allows automatic conversions from C characters and character arrays, but disables automatic conversions from character pointers to Unicode.
  • QT_NO_CAST_TO_ASCII disables automatic conversion from QString to C strings.

One way to define these preprocessor symbols globally for your application is to add the following entry to your qmake project file:

You then need to explicitly call fromUtf8(), fromLatin1(), or fromLocal8Bit() to construct a QString from an 8-bit string, or use the lightweight QLatin1String class, for example:

Similarly, you must call toLatin1(), toUtf8(), or toLocal8Bit() explicitly to convert the QString to an 8-bit string. (Other encodings are supported through the QTextCodec class.)

The result variable, is a normal variable allocated on the stack. When return is called, and because we’re returning by value, the copy constructor is called and a copy of the string is returned. No actual copying takes place thanks to the implicit sharing.

Distinction Between Null and Empty Strings

For historical reasons, QString distinguishes between a null string and an empty string. A null string is a string that is initialized using QString’s default constructor or by passing (const char *)0 to the constructor. An empty string is any string with size 0. A null string is always empty, but an empty string isn’t necessarily null:

All functions except isNull() treat null strings the same as empty strings. For example, toUtf8().constData() returns a valid pointer (not nullptr) to a ‘\0’ character for a null string. We recommend that you always use the isEmpty() function and avoid isNull().

Argument Formats

In member functions where an argument format can be specified (e.g., arg(), number()), the argument format can be one of the following:

Format Meaning
e format as [-]9.9e[+|-]999
E format as [-]9.9E[+|-]999
f format as [-]9.9
g use e or f format, whichever is the most concise
G use E or f format, whichever is the most concise

A precision is also specified with the argument format. For the ‘e’, ‘E’, and ‘f’ formats, the precision represents the number of digits after the decimal point. For the ‘g’ and ‘G’ formats, the precision represents the maximum number of significant digits (trailing zeroes are omitted).

More Efficient String Construction

Many strings are known at compile time. But the trivial constructor QString("Hello"), will copy the contents of the string, treating the contents as Latin-1. To avoid this one can use the QStringLiteral macro to directly create the required data at compile time. Constructing a QString out of the literal does then not cause any overhead at runtime.

A slightly less efficient way is to use QLatin1String. This class wraps a C string literal, precalculates it length at compile time and can then be used for faster comparison with QStrings and conversion to QStrings than a regular C string literal.

Using the QString ‘+’ operator, it is easy to construct a complex string from multiple substrings. You will often write code like this:

There is nothing wrong with either of these string constructions, but there are a few hidden inefficiencies. Beginning with Qt 4.6, you can eliminate them.

First, multiple uses of the ‘+’ operator usually means multiple memory allocations. When concatenating n substrings, where n > 2, there can be as many as n — 1 calls to the memory allocator.

In 4.6, an internal template class QStringBuilder has been added along with a few helper functions. This class is marked internal and does not appear in the documentation, because you aren’t meant to instantiate it in your code. Its use will be automatic, as described below. The class is found in src/corelib/tools/qstringbuilder.cpp if you want to have a look at it.

QStringBuilder uses expression templates and reimplements the ‘%’ operator so that when you use ‘%’ for string concatenation instead of ‘+’ , multiple substring concatenations will be postponed until the final result is about to be assigned to a QString. At this point, the amount of memory required for the final result is known. The memory allocator is then called once to get the required space, and the substrings are copied into it one by one.

Additional efficiency is gained by inlining and reduced reference counting (the QString created from a QStringBuilder typically has a ref count of 1, whereas QString::append() needs an extra test).

There are two ways you can access this improved method of string construction. The straightforward way is to include QStringBuilder wherever you want to use it, and use the ‘%’ operator instead of ‘+’ when concatenating strings:

A more global approach which is the most convenient but not entirely source compatible, is to this define in your .pro file:

and the ‘+’ will automatically be performed as the QStringBuilder ‘%’ everywhere.

Maximum size and out-of-memory conditions

The current version of QString is limited to just under 2 GB (2^31 bytes) in size. The exact value is architecture-dependent, since it depends on the overhead required for managing the data block, but is no more than 32 bytes. Raw data blocks are also limited by the use of int type in the current version to 2 GB minus 1 byte. Since QString uses two bytes per character, that translates to just under 2^30 characters in one QString.

In case memory allocation fails, QString will throw a std::bad_alloc exception. Out of memory conditions in the Qt containers are the only case where Qt will throw exceptions.

Note that the operating system may impose further limits on applications holding a lot of allocated memory, especially large, contiguous blocks. Such considerations, the configuration of such behavior or any mitigation are outside the scope of the Qt API.

Strings in Qt5

In this chapter we work with strings. Qt5 has a QString class for working with strings. It is very powerful and has numerous methods.

The QString class provides a Unicode character string. It stores a string as 16-bit QChars. Each QChar corresponds to one Unicode 4.0 character. Unlike strings in many other programming languages, a QString can be modified.

In the examples of this chapter, we not need the Qt GUI module; we create command line programs. Since Qt GUI is included by default, we can disable it by adding the QT -= gui declaration in the project file.

Advertisements Qt5 string basic example

In the first example, we work with a few basic methods of the QString class.

In the code example, we initiate a QString . We append and prepend some additional text. We print the length of the string. Finally, we print the modified string in upper and lower case.

A QString is initiated.

We append and prepend text to the initial string. The string is modified in-place.

‘I love chess’ is printed to the terminal.

The count method returns the number of characters in the string. The length and size methods are equivalents.

These two methods return an uppercase and lowercase copy of the string. They do not modify the string, they return a new modified copy of the string.

Qt5 initiating strings

A QString can be initiated in several ways.

We present five ways of initiating a QString.

This is a traditional way of initiating a string in computer languages.

This is an object way of initiating a QString .

This is the brace initialization.

We have a string object from the C++ standard library. We use its c_str method to generate a null-terminated sequence of characters. This array of characters, a classic C representation of a string, can be assigned to a QString variable.

In these code lines we convert a standard C++ string to a QString . We utilise the fromLatin1 method. It takes a pointer to the an array of characters. The pointer is returned with the data method of the std::string . The second parameter is the the size of the std::string .

This is a C string; it is an array of chars. One of the QString constructors can take an array of chars as a parameter.

Advertisements Qt5 access string elements

A QString is a sequence of QChars . The elements of a string can be accessed using the [] operator or the at method.

We print some individual characters from a specific QString .

We print the first and the fifth element of a string.

With the at method, we retrieve the first character of the string.

The at method returns null if we are trying to access a character outside the range of string characters.

Qt5 string length

There are three methods to get the length of a string. The size , the count , and the length method. All do the same thing. They return the number of characters in the specified string.

We get the size of four strings.

Each of these two strings has a white character.

This string consists of Russian letters.

From the output we can see that the length method counts the white characters too.

Qt5 build string

Dynamic string building allows us to replace specific control characters with actual values. We use the arg method to do the interpolation.

The markers which are going to be replaced begin with the % character. The following character is a number specifying the argument. There can be multiple of arguments for a string. The arg method is overloaded, it can take integers, long numbers, chars, and QChars among others.

The %1 is the marker which we plan to replace. We have defined one integer.

The arg method takes an integer. The %1 marker is replaced with the value of the n variable.

These three lines do the same thing for a double number. The correct arg method is called automatically.

We can have multiple control characters. The %1 refers to the first argument, the %2 to the second. The arg methods are called in a consecutive chain.

Qt5 substrings

When doing text processing, we need to find substrings of normal strings. We have left , mid , and right methods at our disposal.

We will use all three methods to find some substrings of a given string.

With the right method, we get five rightmost characters of the str string. The ‘train’ is printed.

With the left method, we get nine leftmost characters of the str string. The ‘The night’ is printed.

With the mid method, we get five characters starting from the 4th position. The ‘night’ is printed.

The QStringRef class is a read-only version of a QString . Here we create a QStringRef of a portion of the str2 string. The second parameter is the position and the third is the length of the substring.

Qt5 looping through strings

A QString consists of QChars . We can loop through the QString to access each element of a string.

We show three ways to go through a QString . We add a space character between the letters as we print them to the terminal.

We loop over the string with the range-based for loop.

In this code, we use iterators to go through the string.

We compute the size of the string and use the at method to access the string elements.

Qt5 string comparison

The QString::compare static method is used to compare two strings. The method returns an integer. If the returned value is less than zero, the first string is less than the second. If it returns zero, both strings are equal. Finally, if the returned value is greater than zero, the first string is greater than the second. By ‘less’ we mean that a specific character of a string is positioned before the other one in the character table.

Strings are compared the following way: the first characters of the two strings are compared; if they are equal, the following two characters are compared until we find some characters that differ or we find that all characters match.

We will do case sensitive and case insensitive comparison with the compare method.

For better code clarity, we define the STR_EQUAL constant.

We are comparing these three strings.

We compare a and b strings, they are not equal. They differ in the first character.

In case of case insensitive comparison, the strings are equal. The Qt::CaseInsensitive makes the comparison case insensitive.

The chop method removes the last character from the c string. Now the b and c strings are equal.

Qt5 Converting strings

Strings often need to be converted to other data types, and vice versa. The toInt , toFloat , toLong are three QString methods which convert a string to an integer, float, and long number. (There are more such methods.) The setNum method converts various numeric data types to a string. The method is overloaded and the correct one is called automatically.

In the example we convert two strings to integers and add them. Then we convert two integers to strings and concatenate them.

The toInt method converts a string to an integer. We add two numbers converted froms strings.

In this case the setNum method converts an integer to a string. We concatenate two strings.

Letters

Characters are divided into various categories: digits, letters, spaces, and punctuation characters. Each QString consists of QChars. The QChar has the isDigit , isLetter , isSpace , and isPunct method to perform the job.

In the example we define a simple sentence. We count the number of digits, letters, spaces, and punctuation characters in the sentence.

We define an integer variable for each character category.

This is the sentence to be examined.

We use the for-range based loop to go through the QString . Each of the elements is a QChar . We use the methods of the QChar class to determine the categories of characters.

Using the string interpolation, we print the numbers to the terminal.

Advertisements Qt5 modify strings

Some methods (for example the toLower method) return a new modified copy of an original string. Other methods modify the string in-place. We present some of them.

We describe four methods that modify a string in-place.

The append method adds a new string at the end of the string.

The remove method removes 3 characters from the string, starting from position 10.

The replace method replaces 3 characters beginning at position 7 with the specified string.

The clear method clears the string.

Advertisements Qt5 aligning strings

It is a common requirement to have a neat output. We can use the leftJustified and rightJustified methods to align our strings.

The example aligns field strings to the right.

We calculate the size of the widest string.

The rightJustified method returns a string having width characters. If the string is shorter, the rest is filled with the provided character. In our case, it is a space character.

Qt5 escape characters

Qt5 has a toHtmlEscaped method, which converts a plain text string to an HTML string with HTML metacharacters <, >, &, and » replaced by HTML named entities.

This C program includes HTML metacharacters.

The example reads a C program and replaced the metacharacters with their named entities.

Описание Класса QString
[модуль QtCore]

Обратите внимание: Все функции данного класса применяют неявное совместное использование данных.

Открытые Типы
Открытые Функции
Статические Открытые Члены
Связанные Не-Члены

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

Класс QString представляет собой строку символов Unicode.

QString хранит строку 16-битных QChar, где каждый QChar хранит символ Unicode 4.0. Unicode = это международный стандарт, поддерживающий большинство существующих на сегодня письменных систем. Это супернабор из ASCII и Latin-1 (ISO 8859-1), и все символы ASCII/Latin-1 доступны в тех-же самых кодовых позициях.

Неявно QString применяет совместное использование данных (копирование-при-записи) для предотвращения лишнего выделения памяти и ненужного копирования информации. Это также помогает уменьшить свойственный для хранения 16-битных символов излишки памаяти по сравнения с 8-битными символами.

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

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

QString конвертирует const char * в Unicode используя fromAscii(). По умолчанию, fromAscii() предпочитает символы с кодом, болшим 128, такие как символы Latin-1, но это можно изменить вызвав QTextCodec::setCodecForCStrings().

Во всех методах QString пришнимающих параметры const char *, const char * как классическая оканчивающаяся на ‘\0’ строка в стиле C. Это позволяет параметрам const char * иметь значение 0.

Вы также можете передавать строковую информация как массив QChar:

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

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

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

at() может работать быстрее, чем оператор operator[](), так как он никогда не заставляет выполняться глубокое копирование.

Для извлечения нескольких символов за раз, используйте left(), right() и mid().

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

После вызова resize() заново расположенные символы имеют неопределенные значения. Для установки всех символов в определенное значение вызовите fill().

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

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

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

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

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

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

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

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

Для получения версии строки приведенной к верхнему или нижнему регистру, используйте toUpper() или toLower().

Если Вы хотите заменить все вхождения определенной подстроки другой подстрокой, используйте одну из двух-параметровых перегруженных replace().

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

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

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

Для получения указателя на фактические символьные данные, вызовите data() или constData(). Эти функции возвращают указатель на начало массива QChar. Гарантируется, что полученный указатель останется в силе, пока к QString не обратится неконстантная функция.

Преобразования между 8-битными строками и строками Unicode

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

    () возвращает 8-битную строку в кодировке ASCII. () возвращает 8-битную строку в кодировке Latin-1 (ISO 8859-1). () возвращает 8-битную строку в кодировке UTF-8. UTF-8 — это супернабор ASCII поддерживающий полный набор символов Unicode с помощью последовательностей мультибайтов. () возвращает 8-битную строку используя локальную системную кодировку.

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

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

  • QT_NO_CAST_FROM_ASCII невозможно автоматическое преобразование ASCII в Unicode.
  • QT_NO_CAST_TO_ASCII невозможно автоматическое преобразование QString в ASCII.

Один из способов установить эти команды препроцессора для всего приложения состоит в том, чтобы включить следующую строку в файл проекта qmake:

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

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

Вниманию программистов на C

Из-за системы типов C++ и того факта, что QString применяет неявное совместрое использование данных, QStrings может использоваться подобно int и другим базовым типам. Например:

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

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

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

Все функции, за исключением isNull(), обращаются с нулевой строкой точно также, как с пустой. Например, toAscii().constData() возвращаят указатель на символ ‘\0’ для нулевой строки (а не нулевой указатель), а QString() считается равным QString(""). Мы рекомендуем всегда пользоваться isEmpty() и избегать isNull().

Описание Типов Членов

enum QString::NormalizationForm
Константа Значение Расшифровка
QString::NormalizationForm_D 0 Каноническое Разложение
QString::NormalizationForm_C 1 Каноническое Разложение сопровождаемое Каноническим Составлением
QString::NormalizationForm_KD 2 Разложение Совмещенного
QString::NormalizationForm_KC 3 Разложение Совмещенного Сопровождаемое Каноническим Составлением
enum QString::SectionFlag
flags QString::SectionFlags
Константа Значение Расшифровка
QString::SectionDefault 0x00 Пустые записи учитываются, предваряющий и замыкающий разделители не включаются и поиск разделителя выполняется с учетом регистра.
QString::SectionSkipEmpty 0x01 Пустые записи не учитываются, т.е. они не рассматриваются как start и end.
QString::SectionIncludeLeadingSep 0x02 Предваряющий разделитель (если существует) включается в возвращаемую строку.
QString::SectionIncludeTrailingSep 0x04 Замыкающий разделитель (если существует) включается в возвращаемую строку.
QString::SectionCaseInsensitiveSeps 0x08 Поиск разделителя выполняется без учета регистра.

Тип SectionFlags — это typedef для QFlags<SectionFlag>. Он хранит комбинацию ИЛИ значений SectionFlag.

enum QString::SplitBehavior

Данное перечисление определяет, как функция split() ведет себя по отношению к пустым строкам.

Константа Значение Расшифровка
QString::KeepEmptyParts 0 Если строка пустая, то она войдет в результат.
QString::SkipEmptyParts 1 Если строка пустая, то она не войдет в результат.

Описание Функций-Членов

QString::QString ()

Создает нулевую строку. Нулевая строка всегда пустая.

QString::QString ( const QChar * unicode, int size )

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

QString производит глубокое копирование информации строки.

QString::QString ( QChar ch )

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

QString::QString ( int size, QChar ch )

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

QString::QString ( const QLatin1String & str )

Создает копию строки Latin-1 str.

QString::QString ( const QString & other )

Создает копию other.

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

QString::QString ( const char * str )

Создает строку инициализированную строкой ASCII str. str преобразуется в Unicode с использованием fromAscii().

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

QString::QString ( const QByteArray & ba )

Создает строку инициализированную битовым массивом ba. ba конвертируется в Unicode с использованием fromAscii(). Копирование останавливается при достижении первого нулевого символа, если такой символ не встречается, копируются все элементы массива.

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

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

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

Это то-же самое, что и insert(size(), str).

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично вышеприведенной функции.

Добавляет байтовый массив ba к данной строке. ba преобразуется в Unicode с испольлзованием fromAscii().

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично вышеприведенной функции.

Добавляет строку str к данной строке. str преобразуется Unicode с использованием fromAscii().

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

QString & QString::append ( QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично вышеприведенной функции.

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

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

Данная функция возвращает копию данной строки, в которой вхождение %1, %2, . %9 с самым низким номером заменено на a.

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

Следующий пример показывает формирование строки ‘состояния’ в которой показывается процесс обработки списка файлов:

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

Если строка не содержит нужных маркеров (%1, %2 и т.д.), то результат не определен.

QString QString::arg ( const QString & a1, const QString & a2 ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Эта функция работает также, как str.arg(a1).arg(a2), только все делается за один проход. Результат может быть различным только если a1 содержит, например, %1:

QString QString::arg ( const QString & a1, const QString & a2, const QString & a3 ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Эта функция работает также, как str.arg(a1).arg(a2).arg(a3), только все делается за один проход.

QString QString::arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4 ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Эта функция работает также, как str.arg(a1).arg(a2).arg(a3).arg(a4), только все делается за один проход.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

QString QString::arg ( double a, int fieldWidth = 0, char fmt = ‘g’, int prec = -1, const QChar & fillChar = QLatin1Char( ‘ ‘ ) ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Аргумент a форматируется согласно указанному формату fmt, который по умолчанию равен ‘g’ и может принимать любое из следующих значений:

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

В вариантах ‘e’, ‘E’ и ‘f’, prec — это число знаков после запятой. В вариантах ‘g’ и ‘G’, prec — это максимальное количество значимых цифр (переходящие нули опускаются).

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

const QChar QString::at ( int i ) const

Возвращает символ строки стоящий в позиции с номером i.

i должно быть корректным номером позиции (т.е. 0 <= i < size()).

int QString::capacity () const

Возвращает максимальное количество символов, которые могут быть размещены в строке без того, чтобы вызвать ее перемещение.

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

void QString::chop ( int n )

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

Если n больше size(), строка будет пустой.

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

void QString::clear ()

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

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Работает подобно compare(*this, other).

const QChar * QString::constData () const

Возвращает указатель на информацию содержащуюся в QString. Указатель может использоваться для получения доступа к символам, составляющим строку. Для удобства данные завершаются символом ‘\0’.

Указатель остается корректным пока строка не будет изменена.

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

bool QString::contains ( const QRegExp & rx ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

int QString::count ( const QRegExp & rx ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

Данная функция возвращает количество накладывающихся вариантов. Пример ниже содержит четыре вхождения "ana" или "ama":

int QString::count () const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

QChar * QString::data ()

Возвращает указатель на информацию содержащуюся в QString. Указатель может использоваться для доступа и изменения символов содержащихся в строке. Для удобства, данные завершаются символом ‘\0’.

Указатель остается корректным пока строка не будет изменена.

const QChar * QString::data () const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

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

QString QString::fromAscii ( const char * str, int size = -1 ) [static]

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

Если size равно -1 (по умолчанию), то оно принимается равным qstrlen(str).

Если кодек был установлен с помощью QTextCodec::setCodecForCStrings(), то он будет использован для конвертации str в Unicode; в противном случае данная функция сделает это подобно fromLatin1().

QString QString::fromLatin1 ( const char * str, int size = -1 ) [static]

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

Если size равно -1 (по умолчанию), то оно принимается равным qstrlen(str).

QString QString::fromLocal8Bit ( const char * str, int size = -1 ) [static]

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

Если size равно -1 (по умолчанию), то оно принимается равным qstrlen(str).

Для конвертации строки в Unicode используется QTextCodec::codecForLocale().

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

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

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

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

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

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

Возвращает копию str. str конвертируется в Unicode с использованием fromAscii().

Данный конструктор доступен только если Qt сконфигурирован для возможности использования STL.

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

Возвращает str. str конвертируется из utf16 если размер wchar_t равен двум байтам (онапример в Windows) и из ucs4 если размер wchar_t равен четырем байтам (большинство Unix-систем).

Данный конструктор доступен только если Qt сконфигурирован для возможности использования STL.

QString QString::fromUtf8 ( const char * str, int size = -1 ) [static]

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

Если size равно -1 (по умолчанию), то оно принимается равным qstrlen(str).

QString QString::fromUtf16 ( const ushort * unicode, int size = -1 ) [static]

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

Если size равно -1 (по умолчанию), то оно принимается равным qstrlen(str).

QString makes a deep copy of the Unicode data.

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

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

int QString::indexOf ( const QRegExp & rx, int from = 0 ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

QString & QString::insert ( int i, const QString & str )

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

Если i больше size(), то строка сперва растягивается с использованием resize().

QString & QString::insert ( int i, const QLatin1String & str )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

QString & QString::insert ( int i, const QChar * unicode, int size )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

QString & QString::insert ( int i, QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Вставляет ch в строку в позиции с индексом i.

bool QString::isEmpty () const

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

bool QString::isNull () const

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

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

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

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

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

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

Данная перегруженная функция предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

int QString::lastIndexOf ( const QRegExp & rx, int from = -1 ) const

Данная перегруженная функция предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

QString QString::left ( int len ) const

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

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

QString QString::leftJustified ( int width, QChar fill = QLatin1Char( ‘ ‘ ), bool truncate = false ) const

Возвращает строку size() которой равно width символов данной строки дополненную символами fill.

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

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

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Аналогично localeAwareCompare(*this, other).

QString QString::mid ( int i, int len = -1 ) const

Возвращает строку содержащую len символов данной строки начиная с позиции i.

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

QString QString::normalized ( NormalizationForm form ) const

Возвращает строку в нормальной форме Unicode form.

QString QString::normalized ( NormalizationForm form, QChar::UnicodeVersion version ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает строку в нормальной форме Unicode form, в соответствии с версией version стандарта Unicode.

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

Возвращает строку содержащее число n в системе счисления с основанием base, которое по умолчанию равно 10 и должно быть между 2 и 36.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

QString QString::number ( uint 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 f = ‘g’, int prec = 6 ) [static]

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Аргумент n форматируется в соответствии с форматом f и точностью prec. Формат f может иметь значения ‘f’, ‘F’, ‘e’, ‘E’, ‘g’ и ‘G’. Для пояснения значений форматов см. arg().

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

Вставляет строку str в начало данной строки и возвращает ссылку на данную строку строку.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Вставляет строку Latin-1 str в начало данной строки.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Вставляет массив байтов ba в начало данной строки. ba конвертируется в Unicode с помощью fromAscii().

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Вставляет строку str в начало данной строки. str конвертируется в Unicode с помощью fromAscii().

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

QString & QString::prepend ( QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Вставляет символ ch в начало данной строки.

void QString::push_back ( const QString & other )

Данная функция предоставлена для совместимости с STL. Она эквивалентна append(other).

void QString::push_back ( QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Аналогично(ch).

void QString::push_front ( const QString & other )

Данная функция предоставлена для совместимости с STL. Она эквивалентна prepend(other).

void QString::push_front ( QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Аналогично prepend(ch).

QString & QString::remove ( int pos, int len )

Удаляет из строки len символов начиная с позиции с индексом pos и возвращает ссылку на строку.

Если pos в пределах строки, но pos + len вне конца строки, то строка обрезается в позиции pos.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Удаляет все вхождения строки str в данной строке. Возвращает ссылку на строку.

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

Аналогично replace(str, "", cs).

QString & QString::remove ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Удаляет все вхождения символа ch в данной строке и возвращает ссылку на эту строку.

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

Аналогично replace(ch, "", cs).

QString & QString::remove ( const QRegExp & rx )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Удаляет все соответствия регулярному выражению rx в данной строке и возвращает ссылку на строку. Например:

QString & QString::replace ( int pos, int len, const QString & after )

Заменяет len символов начиная с позиции pos на строку after и возвращает ссылку на данную строку.

QString & QString::replace ( int pos, int len, const QChar * unicode, int size )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Заменяет len символов начиная с позиции pos первыми size символами QChar массива unicode.

QString & QString::replace ( int pos, int len, QChar after )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Заменяет len символов начиная с позиции pos на символ after.

QString & QString::replace ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Заменяет все соответствия строке before строкой after.

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

QString & QString::replace ( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Заменяет все символы ch в строке на строку after. Возвращает ссылку на строку.

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

QString & QString::replace ( QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Заменяет все символы before на символ after. Возвращает ссылку на строку.

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

QString & QString::replace ( const QRegExp & rx, const QString & after )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Заменяет все соответствия регулярному выражению rx в строке на строку after. Возвращает ссылку на строку. Например:

Для регулярных выражений содержащих внутренние выражения вхождения \1, \2, . в after заменяются на rx.cap(1), cap(2), .

void QString::reserve ( int size )

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

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

Данная функция полезна в коде формирующем длинную строку для избежания перемещения строки. В следующем примере мы хотим увеличивать строку пока не выполнится некоторое условие не станет истинным и мы довольно обоснованно считаем вызов reserve() оправданным:

void QString::resize ( int size )

Устанавивает длину строки в size символов.

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

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

Если Вы хотите добавить в конец строки несколько повторяющихся символов, то лучше, чем resize(), использовать operator+=():

Если Вы хотите растянуть строку до определенной длины и заполнить новые позиции определенным символами, используйте leftJustified():

QString QString::right ( int len ) const

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

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

QString QString::rightJustified ( int width, QChar fill = QLatin1Char( ‘ ‘ ), bool truncate = false ) const

Возвращает строку size() которой равен width символов данной строки дополненную символами fill.

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

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

QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

Данная функция возвращает раздел строки.

Данная строка рассматривается как последовательность записей разделенных символом sep. Возвращаемая строка состоит из записей начинающихся с записи с номером start до записи с номером end включительно. Если end не определено, то возвращаются все записи начиная со start. Записи нумеруются 0, 1, 2 и т.д. при счете слева на право и -1, -2 и т.д.при счете справа на лево.

Аргумент flags может использоваться для изменения некоторых аспектов поведения функции, например: учитывать-ли регстр, пропускать-ли пустые записи, как обращаться с предваряющими и замыкающими разделителями; для получения подробной информации см. SectionFlags.

Если start или end отрицательны, то записи считаются от правого конца строки. Самая правая запись при этом будет иметь номер -1, запись находящаяся слева от правой будет иметь номер -2 и т.д.

QString QString::section ( const QString & sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

QString QString::section ( const QRegExp & reg, int start, int end = -1, SectionFlags flags = SectionDefault ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

QString & QString::setNum ( int n, int base = 10 )

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

Основание системы счисления по умолчанию равно 10 и должно находиться в интервале от 2 до 36.

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 ( short n, int base = 10 )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

QString & QString::setNum ( ushort n, int base = 10 )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

QString & QString::setNum ( double n, char f = ‘g’, int prec = 6 )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Присваивает строке символное представление числа n форматированного в соответствии с форматом f и точностью prec и возвращает ссылку на строку.

Формат f может принимать значение ‘f’, ‘F’, ‘e’, ‘E’, ‘g’ или ‘G’. Для получения более детальной информации о форматах см. arg().

QString & QString::setNum ( float n, char f = ‘g’, int prec = 6 )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Присваивает строке символное представление числа n форматированного в соответствии с форматом f и точностью prec и возвращает ссылку на строку.

Формат f может принимать значение ‘f’, ‘F’, ‘e’, ‘E’, ‘g’ или ‘G’. Для получения более детальной информации о форматах см. arg().

QString & QString::setUnicode ( const QChar * unicode, int size )

Устанавливает длину строки в size символов и копирует в нее unicode.

Если unicode равно 0, то ничего не будет скопировано, но размер строки будет установлен в size.

QString & QString::setUtf16 ( const ushort * unicode, int size )

Устанавливает длину строки в size символов и копирует в нее unicode.

Если unicode равно 0, то ничего не будет скопировано, но размер строки будет установлен в size.

QString QString::simplified () const

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

Непечатаемые символы — это множество символов, для которых QChar::isSpace() возвращает true. В это множество входят такие символы ASCII как ‘\t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’ и ‘ ‘.

int QString::size () const

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

Последний символ строки имеет позицию с номером size() — 1. Кроме того, QString гарантирует, что символ стоящий в позиции size() всегда равен ‘\0’ для того, чтобы была возможность использовать значения, возвращаемые функциями data() и constData() в качестве аргументов функций ожидающих строку заканчивающуюся символом ‘\0’.

QStringList QString::split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

Разбивает строку на подстроки используя в качестве разделителя sep и возвращает список полученных строк. Если sep не встречается в строке, то split() возвращает список содержащий единственный элемент — эту строку.

Если cs равно true, то при разбиении строки ищется точное соответствие sep. Если cs равно false, то при поиске sep для разбиения строки не учитывается регистр (т.е. "and" соответствует "AND").

Если behavior равно QString::SkipEmptyParts, то пустые записи не будут включены в возвращаемый список. По умолчанию пустые значения включаются в результат.

QStringList QString::split ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

QStringList QString::split ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Разбивает строку на подстроки в местах соответствующих регулярному выражению rx и возвращает список содержащий подстроки. Если соответствий rx не встречается в строке, то split() возвращает список состоящий из подного элемента — этой строки.

В следующем примере мы разбиваем предложения на слова используя один или несколько символов пробела в качестве разделителя:

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

В третьем примере, используя разделитель нулевой длины \b (окончание слова), мы разделяем предложение на последовательность слов и не-слов:

QString & QString::sprintf ( const char * cformat, . )

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

Escape-последовательность %lc обозначает один символ unicode типа ushort (как он возвращается QChar::unicode()). Escape-последовательность %ls обозначает указатель на строку символов unicode типа ushort завершающуюся нулем (как он возвращается QString::utf16()).

Строка формата поддерживает польшинство преобразований предоставляемых функцией printf() стандартной библиотекой C++. Строка форматирования не поддерживает модификаторы длины (например, h для short, ll для long long). Если модификаторы длины Вам нужны, используйте стандартнулю функцию sprintf():

Предупреждение: Мы не рекомендуем использовать QString::sprintf() в новых программых Qt. Вместо этого лучше использовать QTextOStream или arg(), которые более органично и безопастно поддерживают строки Unicode. Пример использования QTextOStream:

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

void QString::squeeze ()

Освобождает память не требуемую для хранения строки.

Единственное назначение данной функции — это более точное управление использования памяти QString. В большинстве случаев Вам не придется обращаться к данной функции.

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

QByteArray QString::toAscii () const

Возвращает 8-битное ASCII представление строки в качестве QByteArray.

Если кодировка была установлена с помощью QTextCodec::setCodecForCStrings(), то она используется для перевода Unicode в 8-битные символы; в противном случае это делается с помощью toLatin1().

double QString::toDouble ( bool * ok = 0 ) const

Возвращает строку конвертированную в double.

Если не может конвертировать, то возвращает 0.0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Данная функция пытается интерпретировать строку в соответствии с текущей локализацией. Текущая локализация принимается от системы при запуске приложения и может быть изменена с помощью вызова QLocale::setDefault(). Если строку не удается интерпретировать в соответствии с текущей локализацией, то функция обращается к локализации "C".

Из-за двусмысленности между десятичной точкой и разделителем разрядов в различных локализациях, данная функция не работает с разделителями групп разрядов. Если Вам нужно конвертировать такие числа, см. QLocale::toDouble().

Предупреждение: Если строка начинается с пробела, то функция не сможет нормально конвертировать строку и установит *ok в false (если ok не равно 0). Завершающие пробелы игнорируются.

float QString::toFloat ( bool * ok = 0 ) const

Возвращает строку конвертированную в float.

Если не может конвертировать, то возвращает 0.0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

int QString::toInt ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в int используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

QByteArray QString::toLatin1 () const

Возвращает представление Latin-1 данной строка как QByteArray. Возвращаемый массив байтов не определен, если строка содержит не-Latin1 символы.

QByteArray QString::toLocal8Bit () const

Возвращает локализованное 8-битное представление строки как QByteArray. Возвращаемый массив байтов не определен, если строка содержит символы не поддерживаемые 8-битной локальной кодировкой.

Для выполнения конвертирования из Unicode используется QTextCodec::codecForLocale().

long QString::toLong ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в long используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

qlonglong QString::toLongLong ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в long long используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

QString QString::toLower () const

RВозвращает копию строки приведенную к нижнему регистру.

short QString::toShort ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в short используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

std::string QString::toStdString () const

Возвращает объект std::string заполненный информацией содержащейся в данной QString. Символы Unicode конвертируются в 8-битные символы с использованием toAscii().

Данный оператор очень удобен при передаче QString в функции принимающие объект std::string.

Если QString содержит не-ASCII символы Unicode, использование данной функции может привести к потере информации. Вы можете запретить использование данного оператора определив QT_NO_CAST_TO_ASCII перед компиляцией приложения. Тогда для конвертиции строки в const char * Вы должны будете использовать toAscii() (или toLatin1(), toUtf8(), toLocal8Bit()) и передать возвращенное значение в конструктор std::string.

Данный оператор доступен только если Qt сконфигурирована с учетом совместимости с STL.

std::wstring QString::toStdWString () const

Возвращает объект std::wstring заполненный информацией содержащейся в данной QString. std::wstring кодируется в utf16 на платформах, где wchar_t занимает 2 байта (например, Windows), и в ucs4 на платоформах, где wchar_t занимает 4 байта (большинство Unix-систем).

Данный оператор очень удобен при передаче QString в функции принимающие объект std::wstring.

Данный оператор доступен только если Qt сконфигурирована с учетом совместимости с STL.

uint QString::toUInt ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в unsigned int используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

ulong QString::toULong ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в unsigned long используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

qulonglong QString::toULongLong ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в unsigned long long используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

ushort QString::toUShort ( bool * ok = 0, int base = 10 ) const

Возвращает строку конвертированную в unsigned short используя систему счисления с основанием base, которое по умолчанию равно 10 и должно находиться в интервале между 2 и 36, или 0. Если конвертировать не удалось, возвращает 0.

Если ok не равно 0: если нормально конвертировать не удалось, то*ok устанавливается в false; в противном случае *ok устанавливается в true.

Если base равно 0, то используются соглашения языка C: Если строка начинается с "0x", то в качестве основания системы счисления принимается 16; если строка начинается с "0", то в качестве основания системы счисления принимается 8; в противном случает в качестве основания системы счисления принимается 10.

QString QString::toUpper () const

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

QByteArray QString::toUtf8 () const

Возвращает UTF-8 представление данной строки как QByteArray.

QString QString::trimmed () const

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

Символами пробела считаются все символы для которых функция QChar::isSpace() возвращает true. Они включают такие ASCII символы, как ‘\t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’ и ‘ ‘.

В отличие от simplified(), trimmed() не затрагивает внутренние символы пробела.

void QString::truncate ( int pos )

Усекает строку в позиции pos.

Если pos больше длины строки, то ничего не происходит.

const QChar * QString::unicode () const

Возвращает заканчивающееся символовм ‘\0’ Unicode представление строки. Результат остается действительным пока строка не будет изменена.

const ushort * QString::utf16 () const

Возвращает QString как оканчивающийся символом ‘\0’ массив unsigned shorts. Результат остается действительным пока строка не будет изменена.

QString & QString::vsprintf ( const char * cformat, va_list ap )

Метод эквивалентен sprintf() за исключением того, что принимает va_list ap вместо списка переменных-аргументов. Для получения информации о cformat см. описание sprintf().

Данный метод не вызывает макрос va_end macro, так что вызов макроса va_end для ap — это забота вызывающего.

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

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

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

bool QString::operator!= ( const QLatin1String & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

bool QString::operator!= ( const QByteArray & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator!= ( const char * other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

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

Добавляет строку other в конец данной строки и возвращает ссылку на данную строку.

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

QString & QString::operator+= ( const QLatin1String & str )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Добавляет массив байтов ba к данной строке. ba конвертируется в Unicode с использованием fromAscii().

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

QString & QString::operator+= ( const char * str )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Добавляет строку str к данной строке. str конвертируется в Unicode с использованием fromAscii().

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

QString & QString::operator+= ( char ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Добавляет символ ch к данной строке. Символ конвертируется в Unicode с использованием fromAscii().

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

QString & QString::operator+= ( QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

bool QString::operator< ( const QString & other ) const

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

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

bool QString::operator< ( const QLatin1String & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

bool QString::operator< ( const QByteArray & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator< ( const char * other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

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

Возвращает true если данная строка лексически меньше или равна по отношению к строке other; в противном случае возвращает false.

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

bool QString::operator<= ( const QLatin1String & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

bool QString::operator<= ( const QByteArray & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator<= ( const char * other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

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

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

QString & QString::operator= ( const QLatin1String & str )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Присваивает значение строки Latin-1 str данной строке.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Присваивает значение ba данной строке. ba конвертируется в Unicode с использованием fromAscii().

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

QString & QString::operator= ( const char * str )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Присваивает значение str данной строке. str конвертируется в Unicode с использованием fromAscii().

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

QString & QString::operator= ( char ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Присваивает данной строке значение символа ch. Конвертация символа в Unicode выполняется с использованием fromAscii().

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

QString & QString::operator= ( QChar ch )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Устанавливает строку в качестве контейнера для единичного символа ch.

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

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

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

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator== ( const char * other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator> ( const QString & other ) const

Возвращает true если данная строка лексически больше строки other; в противном случае возвращает false.

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

bool QString::operator> ( const QLatin1String & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

bool QString::operator> ( const QByteArray & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator> ( const char * other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

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

Возвращает true если данная строка лексически больше или равна строке other; в противном случае возвращает false.

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

bool QString::operator>= ( const QLatin1String & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

bool QString::operator>= ( const QByteArray & other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

bool QString::operator>= ( const char * other ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

other конвертируется в QString с использованием fromAscii().

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

QCharRef QString::operator[] ( int i )

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

Возвращаемое значение имеет тип QCharRef — вспомогательный класс QString. Вы можете использовать объект QCharRef так, как будто это объект типа QChar &. Если Вы присваиваете ему какое-либо значение, то это значение будет присвоено символу из строки QString от которой была получена ссылка.

const QChar QString::operator[] ( int i ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Функция аналогична at(i).

QCharRef QString::operator[] ( uint i )

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

const QChar QString::operator[] ( uint i ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Связанные Не-Члены

bool operator!= ( const char * s1, const QString & s2 )

Возвращает true если s1 не эквивалентна s2; в противном случае возвращает false. Обратите внимание, что никакая строка не эквивалентна строке s1 являющейся 0.

Для s1 != 0, данная функция аналогична compare(s1, s2) != 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 с использованием fromAscii().

const QString operator+ ( const char * s1, const QString & s2 )

Данная перегруженная функция предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает строку являющуюся результатом конкатенации строки s1 и строки s2. s1 конвертируется в Unicode с использованием fromAscii().

const QString operator+ ( const QString & s, char ch )

Данная перегруженная функция предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает строку являющуюся результатом конкатенации строки s и символа ch.

const QString operator+ ( char ch, const QString & s )

Данная перегруженная функция предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает строку являющуюся результатом конкатенации символа ch и строки s.

bool operator< ( const char * s1, const QString & s2 )

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

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

Для s1 != 0, данная функция аналогична compare(s1, s2) < 0.

QDataStream & operator<< ( QDataStream & out, const QString & str )

Записывает строку str в поток out.

bool operator<= ( const char * s1, const QString & s2 )

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

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

Для s1 != 0, данная функция аналогична compare(s1, s2) <= 0.

bool operator== ( const char * s1, const QString & s2 )

Возвращает true если строка s1 эквивалентна строке s2; в противном случае возвращает false. Обратите внимание: никакая строка не эквивалентна строке s1 являющейся 0.

Для s1 != 0, данная функция аналогична && compare(s1, s2) == 0.

bool operator> ( const char * s1, const QString & s2 )

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

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

Эквивалентно compare(s1, s2) > 0.

bool operator>= ( const char * s1, const QString & s2 )

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

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

Для s1 != 0, данная функция аналогична compare(s1, s2) >= 0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *