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

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

.arg("ре rmissive").arg("society").arg(1950).arg(1970);

В этом примере заменяется словом «permissive» (либеральное), «%2» заме­няется словом «society» (общество), «%3» заменяется на «1950» и «%4» заменяется на «1970». В результате получаем «permissive society (1950s - 1970s)» (либеральное общество в 1950-70 годах). Функция arg() перегружается для обработки различных типов данных. В некоторых случаях используются дополнительные параметры для управления шириной поля, базой числа или точностью числа с плавающей точкой. В целом гораздо лучше использовать arg(), а не sprintf (), поскольку эта функция сохраняет тип, полностью поддерживает Unicode и позволяет трансляторам изме­нять порядок параметров «%п».

QString может преобразовывать числа в строки, используя статическую функ­цию QSt ring: :number():

str = QString::number(59.6);

Или это можно сделать при помощи функции setNum(): str.setNum(59.6);

Обратное преобразование строки в число осуществляется при помощи функций tolnt (), toLongLong(), toDouble() и так далее. Например:

bool ok;

double d = str.toDouble(&ok);

Этим функциям передается необязательный параметр-ссылка на переменную типа bool, которая устанавливается на значение true или false в зависимости от ус­пешности преобразования. Если преобразование завершается неудачей, эти функ­ции возвращают 0.

Имея некоторую строку, нам часто приходится выделять какую-то ее часть. Функция mid() возвращает подстроку заданной длины (второй аргумент), начиная с указанной позиции (первый аргумент). Например, следующий программный код выводит на консоль слово «рауз»1:

OString str = "polluter pays principle"; qDebugO « str.mid(9, 4);

Если мы не укажем второй аргумент, функция mid() возвратит подстроку, начи­ная с указанной позиции и до конца строки. Например, следующий программный код выдает на консоль слова «pays principle»:

QString str = "polluter pays principle"; qDebugO « str.mid(9);

Существуют также функции left() и right(), которые выполняют аналогич­ную работу


<< назад вперед >>