Шаг 56.
Библиотека Qt.
Класс QString

    На этом шаге рассмотрим класс QString.

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

    Принцип хранения данных аналогичен классу QVector, единственное отличие состоит в том, что элементы всегда относятся к символьному типу QChar, т. е., можно сказать, строка — это контейнер для хранения символов. Класс QString предоставляет целую серию методов и операторов, позволяющих проводить со строками разного рода операции, например соединять строки, осуществлять поиск подстрок, преобразовывать их в верхний или нижний реестр и многое другое.

    Строки можно сравнивать друг с другом при помощи операторов сравнения ==, !=, <, >, <= и >=. Результат сравнения зависит от регистра символов, например:

QString str = "Qt";
bool b1 = (str == "Qt"); // b1 = true
bool b2 = (str != "QT"); // b2 = true

    При помощи метода isEmpty() можно узнать, не пуста ли строка. Того же результата можно добиться, проверив длину строки методом length(). В классе QString имеются различия между пустыми и нулевыми строками, таким образом, строка, созданная при помощи конcтруктора по умолчанию, является нулевой строкой. Например:

QString str1 = "";
QString str2;
str1.isNull(); // false
str2.isNull(); // true

    Объединение строк является одной из самых распространенных операций. Провести его можно разными способами, скажем, при помощи операторов += и + или вызовом метода append(). Например:

QString str1 = "Библиотека";
QString str2 = "Qt";
QString str3 = str1 + str2; // str3 = "Библиотека Qt"
str1.append(str2); //str1 = "Библиотека Qt"

    Для замены определенной части строки другой класс QString предоставляет метод replace(). Например:

QString str = "Программирование";
str.replace("ирование", "а"); // str = "Программа"

    Для преобразования данных строки в верхний или нижний регистр используются методы toLower() или toUpper(). Например:

QString str1 = "ПрОгРаМмА";
QString str2 = str1.toLower(); // str2 = "программа"
QString str3 = str1.toUpper(); // str3 = "ПРОГРАММА"

    При помощи метода setNum() можно конвертировать числовые значения в строковые. Того же результата можно добиться вызовом статического метода number(). Например:

QString str = QString::number(35.123);

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

QString str;
QTextStream(&str) << 35.123;

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

bool ok;
QString str = "234";
double d = str.toDouble(&ok);
int n = str.toInt(&ok); 

    Строка может быть разбита на массив строк при помощи метода split() класса QStringList. Следующий пример создаст список из двух строк: "Библиотека" и "Qt":

QString str = "Библиотека Qt";
QStringList list = str.split(" ");

    Операция объединения списка строк в одну строку производится при помощи метода join(). Например, объединить список из двух элементов ("Библиотека" и "Qt") в одну строку, разделив их знаком пробела, можно следующим образом:

str = list.join(" ");

    На следующем шаге рассмотрим контейнерные классы.




Предыдущий шаг Содержание Следующий шаг