Работа с объектами на примере класса QString




Класс QString предназначен для хранения и обработки строк (текста).

Самый простой способ инициализации объекта записывается как

 

QString str = "Hello";

 

или

 

QString str("Hello");

 

Для QString можно использовать операторы "+" и "+=". Это одни из примеров реализации принципа полиморфизма, т.е. одни и те же операторы (функции) могут обрабатывать данные разных типов. Такая возможность значительно упрощает работу для пользователя.

 

str += " World!";

 

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

 

str.append(" World!");

 

Еще один способ "сборки" строки из других строк и чисел, а также ещё один пример полиморфизма – использование функции arg() за счёт использования управляющих символов:

 

str = "%1 %2 (%3s-%4s)";

str.arg("permissive").arg("society").arg(1950).arg(1970);

 

В этом примере символы "%1" будут заменены словом "permissive", "%2" – "society", "%3" – "1950" и "%4" – "1970". В результате получится строка "permissive society (1950s-1970s)". Класс имеет несколько перегруженных функций arg() для обработки различных типов данных. Некоторые из них имеют дополнительные параметры, управляющие длиной выходной строки, базой системы счисления и точностью представления чисел.

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

 

str = QString::number(59.6);

 

или с помощью QString::setNum():

 

str.setNum(59.6);

 

Обратное преобразование может быть выполнено функциями toInt(), toDouble() и т.д., например:

 

bool ok;

double d = str.toDouble(&ok);

 

Эти функции могут принимать необязательный аргумент типа bool, в котором возвращается признак успеха преобразования. Если преобразование не может быть выполнено, они возвращают 0.

Зачастую возникает ситуация, когда необходимо извлечь часть строки. Функция mid() возвращает подстроку заданной длины, начиная с заданной позиции в исходной строке. Например, следующий код выводит строку "pays":

 

QString str = "polluter pays principle";

qDebug() << str.mid(9, 4);

 

Если опустить второй аргумент (или передать в качестве второго аргумента число -1), функция вернет подстроку, начиная с заданной позиции и до конца исходной строки. Например, следующий код выведет строку "pays principle":

 

qDebug() << str.mid(9);

 

Дополнительно имеются функции left() и right(). Они обе принимают количество символов n и возвращают первые или последние n символов исходной строки, соответственно. Например, следующий код выведет строку "polluter principle":

 

qDebug() << str.left(8).ascii() << str.right(9) << endl;

 

Если нужно выполнить проверку – начинается ли или заканчивается ли строка определенной комбинацией символов, для этих целей существуют функции startsWith() и endsWith():

 

if (uri.startsWith("http:") && uri.endsWith(".png"))

 

Для строк определён оператор сравнения строк "==". Он чувствителен к регистру символов. Для выполнения регистронезависимого сравнения, можно воспользоваться функциями upper() или lower(), например:

 

if (fileName.lower() == "readme.txt")

 

Для замены одной подстроки в строке другой подстрокой, используйте функцию replace():

 

QString str = "a sunny day";

str.replace(2, 5, "cloudy");

 

в результате получится строка "a cloudy day". То же самое действие может выполнено с помощью функций remove() и insert():

 

str.remove(2, 5);

str.insert(2, "cloudy");

 

В первой строке удаляется пять символов, начиная со 2-й позиции, в результате получается строка "a day" (с двумя пробелами), затем, во второую позицию вставляется слово "cloudy". Существуют перегруженные версии функции replace(), которые заменяют все вхождения первого аргумента на второй. Например, чтобы заменить все символы '&' в строке на "&amp;":

 

str.replace("&", "&amp;");

 

Очень часто возникает необходимость выбросить из начала и конца строки все лишние пробельные символы (такие как: пробелы, символы табуляции, символы перевода строки). Для этой цели существует функция stripWhiteSpace():

 

QString str = " BOB \t THE \nDOG \n";

qDebug() << str.stripWhiteSpace();

 

Строка str может быть изображена как:

А результат, возвращаемый функцией stripWhiteSpace(), как:

Для удаления лишних пробельных символов, как на концах строки, так и внутри, предназначена функция simplifyWhiteSpace():

 

QString str = " BOB \t THE \nDOG \n";

qDebug() << str.simplifyWhiteSpace();

 

Результат работы функции будет выглядеть так:

QString различает пустые строки и несуществующие (NULL) строки. Эти различия корнями уходят в язык программирования C. Чтобы проверить – существует ли строка, можно вызывать функцию isNull(). Для большинства приложений очень важно знать – содержит ли строка хотя бы один символ. Функция isEmpty() вернет true, если строка не содержит ни одного символа (пустая или несуществующая строка).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: