Qt5 Функции для работы с QString

Работа со строками QString в Qt5

Qt

  • Необходимо #include <QString>;
  • Элементы строки QString относятся к символьному типу QChar.
  • Для задания строки можно использовать оператор =.
  • Строки можно сравнивать с помощью ==, <=, >=, !=, >,<. Результат зависит от регистра символов.
  • Доступ к элементу осуществляется с помощью [] или .at(index). Счет начинается с нуля.
  • Для конкатенации строк можно использовать +, +=.

Основные функции

Функция Описание Пример
append Добавление к строке справа строки. s="one";
s.append(" two"); // "one two"
clear Очищает содержимое строки. При проверке isEmpty вернет true, isNull вернет true. s.clear();
::compare Сравнение строк. Возможность учитывать регистр. Результатом является целое число, меньшее нуля, если первая строка меньше второй, равно нулю, если строки равны, большее нуля, если первая строка больше второй. int x = QString::compare("aUtO", "AuTo",Qt::CaseInsensitive);  // 0
size Количество символов в строке s="itmath";
int n=s.size(); //5
contains true, если строка содержит данную строку. Чувствительность к регистру определяется вторым параметром. s="Abc Def"; s.contains("dEf", Qt::CaseInsensitive); //true
indexOf  Номер позиции первого вхождения строки в данную строку. Можно указать, с какой позиции искать. Возвращает -1, если строки не найдена. s="test line best";
s.indefOf("est"); // 1
s.indexOf("est",5); //10
length  Количество символов в строке  s="test"; s.length(); //4
split  Разбиение строки на фрагменты. На вход строка разделителей или регулярное выражение. Можно уточнить, пропускать ли пустые фрагменты. Возвращает список. Обратная операция: QStringList::join(QChar sep)  s="a,,,,,b,c";
QStringList w=s.split(",", QString::SkipEmptyParts); // ["a","b","c"]
fill  Заполнение строки заданным символом QChar ch. Если указать дополнительно второй параметр int size, равный новому размеру строки.  s="math";
s.fill('e',3); //eee
insert  Вставка строки в заданную позицию  s="QtStyle"; s.insert(2,"C++"); //QtC++Style
isEmpty  Проверка на пустую строку QString s;
s.isEmpty(); //true
s=""; s.isEmpty(); //true
s="    "; s.isEmpty(); //false
isNull  Проверка на инициализацию QString s;
s.isNull(); //true
s=""; s.isNull(); //false
s="    "; s.isNull(); //false
prepend  Добавление строки или символа в начало данной строки  s="def";
s.prepend("abc"); //abcdef
remove  Удаление фрагмента с указанной позиции заданной длины, удаление всех вхождений данного символа или строки (с учетом настроек чувствительности к регистру)  s="example"; s.remove(1,4); //"ele"
s="abcA"; s.remove(QChar('a'), Qt::CaseInsensitive); //"bc"
replace  Замена фрагмента, заданный позицией и количеством символом, на данную строку. Есть еще вариант вызова для замены всех вхождений.  s="It math";
s.replace(3,4,"c++"); //"it c++"
resize  Изменение длины строки  s="c++ and qt"; s.resize(3); //"c++"
setNum  Перевод переданного числа в строковое представление. Можно указать основание системы счисления (10 по умолчанию)  s.setNum(2015); //"2015"
swap  Обмен значений строк. Выполняется очень быстро  s="abc"; w="cde"; s.swap(w);
toDouble  Конвертация строки в действительное число типа double. Вторым параметром можно передать ссылку на булеву переменную, в которой будет true/false в зависимости от успешности конвертации.  s="12.34"; double d=str.toDouble(); //12.34
toInt  Конвертация строки в целое число в данной системе счисления (по умолчанию 10).  s="123"; bool flag; int n=s.toInt(&flag); if (flag) { //success };
toLower  Перевод всех символов в нижний регистр
toUpper  Перевод всех символов в верхний регистр
trimmed  Удаление пробельных символов в начале и в конце строки (' ','\t','\n','\v','\f','\r')
truncate  Удаление окончания строки с указанного символа  s="abcdel"; s.truncate(3); //"abc"

Дополнительные функции

Функция Описание Пример
capacity  Максимальное количество символов, которое может храниться в данной строке без выделения новой памяти  s="a"; s.append("a"); //"aa"
int c=s.capacity(); //7
chop  Удаление данного количество символов с конца строки. Если реальное количество символов меньше, то результатом будет пустая строка.  s="itmath"; s.chop(4); //"it"
count  Количество символов в строке (как и size()). Количество вхождений данной строки.  s="aaab"; int c=s.count("aa"); //2
endsWith  Возвращает true, если строка заканчивается на данную строку (или символ). Есть возможность учесть регистр.  s="abcd"; s.endsWith("cd"); //true
startsWith  Возвращает true, если строка начинается на данную строку (или символ). Есть возможность учесть регистр.  s="abcd"; s.startsWith("ab"); //true
left  Возвращает подстроку из n первых символов строки.  s="abcd"; w=s.left(2); //"ab"
rigth  Возвращает подстроку из n последних символов строки.  s="abcd"; w=s.right(2); //"cd"
mid  Возвращает строку из n символов, начиная с данной позиции. Если количество символов не указано, то возвращает все символы до конца строки. Если позиция превосходит допустимое значение, то результат - нулевая строка.  s="abcde"; w=s.mid(2,1); //"c"
reserve  Захват памяти не менее чем на указанное количество символов. Удобно, если заранее знаем, сколько символов может понадобится.  s.reserve(200);
repeated  Возвращает копию строки, продублированную указанное количество раз.  s="ab"; w=s.repeated(2); //"abab"
section  Возвращает набор лексем строки. Указываем разделитель, номер первой лексемы, номер последней лексемы. Если номера отрицательны, то счет начинается с последней лексемы.  s="a,bb,ccc,d"; w=s.section(',',1,2); //"bb,ccc"
simplified  Удаление в начале и в конце строки пробельных символов (\t,\n,\v,\r,' '), замена серий пробельных символов внутри строки на один пробел.  s="    one  \n and two\r";
s.simplified(); //s="one and two";
lastIndexOf  Номер позиции последнего вхождения строки в данную строку. Возвращает -1, если строки не найдена.
toHtmlEscaped  Замена символов <,>,& и " на html-сущности (&lt; &gt и т.д.)
toStdString  Возвращает std::string
::number  Возвращает строковый эквивалент переданного числа. Можно указать, в какой системе счисления число.  s=QString::number(123); //"123"

все материалы