Работа со строками QString в Qt5
- Необходимо #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” |
right | Возвращает подстроку из 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-сущности (< > и т.д.) | |
toStdString | Возвращает std::string | |
::number | Возвращает строковый эквивалент переданного числа. Можно указать, в какой системе счисления число. | s=QString::number(123); //”123″ |