Класс QStringList
Класс QStringList предоставляет список строк. Подробнее...
| Заголовок: | #include <QStringList> |
| qmake: | QT += core |
| Наследуется от: | QList |
Примечание: Все функции в этом классе являются повторно-входящими.
Открытые функции
| QStringList() | |
| QStringList(const QString &str) | |
| QStringList(const QList<QString> &other) | |
| QStringList(QList<QString> &&other) | |
| QStringList(std::initializer_list<QString> args) | |
| bool | contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| bool | contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| bool | contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| QStringList | filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| QStringList | filter(const QRegExp &rx) const |
| QStringList | filter(const QRegularExpression &re) const |
| int | indexOf(const QRegExp &rx, int from = 0) const |
| int | indexOf(QRegExp &rx, int from = 0) const |
| int | indexOf(const QRegularExpression &re, int from = 0) const |
| QString | join(const QString &separator) const |
| QString | join(QLatin1String separator) const |
| QString | join(QChar separator) const |
| int | lastIndexOf(const QRegExp &rx, int from = -1) const |
| int | lastIndexOf(QRegExp &rx, int from = -1) const |
| int | lastIndexOf(const QRegularExpression &re, int from = -1) const |
| int | removeDuplicates() |
| QStringList & | replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
| QStringList & | replaceInStrings(const QRegExp &rx, const QString &after) |
| QStringList & | replaceInStrings(const QRegularExpression &re, const QString &after) |
| void | sort(Qt::CaseSensitivity cs = Qt::CaseSensitive) |
| QStringList | operator+(const QStringList &other) const |
| QStringList & | operator<<(const QString &str) |
| QStringList & | operator<<(const QStringList &other) |
| QStringList & | operator<<(const QList<QString> &other) |
| QStringList & | operator=(const QList<QString> &other) |
| QStringList & | operator=(QList<QString> &&other) |
- 78 открытых функций унаследованных от QList
Связанные нечлены
| typedef | QMutableStringListIterator |
| typedef | QStringListIterator |
Дополнительные унаследованные члены
- 3 статических открытых члена унаследованных от QList
Подробное описание
Класс QStringList предоставляет список строк.
QStringList наследуется от QList<QString>. Как и QList, QStringList имеет явное совместное использование. Он обеспечивает быстрый доступ по индексу, а также быстрые вставки и удаления. Передача списков строк в качестве параметров значения происходит быстро и безопасно.
Вся функциональность QList также применима к QStringList. Например, вы можете использовать isEmpty(), чтобы проверить, пуст ли список, и вы можете вызвать такие функции, как append(), prepend(), insert(), replace(), removeAll(), removeAt(), removeFirst(), removeLast() и removeOne() для изменения QStringList. Кроме того, QStringList предоставляет несколько функций удобства, которые упрощают работу со списками строк:
Инициализация
Конструктор по умолчанию создаёт пустой список. Вы можете использовать конструктор списка инициализации для создания списка с элементами:
QStringList fonts = { "Arial", "Helvetica", "Times" }; Добавление строк
Строки можно добавить в список, используя функции insert(), append(), operator+=() и operator<<().
operator<<() можно использовать для удобного добавления нескольких элементов в список:
fonts << "Courier" << "Verdana";
Итерация по строкам
Для итерации по списку можно использовать индексы или итераторы типа QList в стиле Java и STL:
Индексация:
for (int i = 0; i < fonts.size(); ++i)
cout << fonts.at(i).toLocal8Bit().constData() << endl; Итератор в стиле Java:
QStringListIterator javaStyleIterator(fonts);
while (javaStyleIterator.hasNext())
cout << javaStyleIterator.next().toLocal8Bit().constData() << endl; Итератор в стиле STL:
QStringList::const_iterator constIterator;
for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
++constIterator)
cout << (*constIterator).toLocal8Bit().constData() << endl; Класс QStringListIterator — это просто определение типа QListIterator<QString>. QStringList также предоставляют класс QMutableStringListIterator, который является определением типа QMutableListIterator<QString>.
Обработка строк
QStringList предоставляет несколько функций, позволяющих обрабатывать содержимое списка. Вы можете конкатенировать все строки в списке в одну строку (с необязательным разделителем) с помощью функции join(). Например:
QString str = fonts.join(", ");
// str == "Arial, Helvetica, Times, Courier" Аргументом для join может быть одиночный символ или строка.
Для разделения строки на список строк используйте функцию QString::split:
QStringList list;
list = str.split(',');
// list: ["Arial", "Helvetica", "Times", "Courier"] Аргументом для split может быть одиночный символ, строка, QRegularExpression или (устаревший) QRegExp.
Кроме того, функция operator+() позволяет конкатенировать два списка строк в один. Для сортировки списка строк используйте функцию sort().
Список QString также предоставляет функцию filter(), которая позволяет извлечь новый список, содержащий только те строки, которые содержат определённую подстроку (или соответствуют определённому регулярному выражению):
QStringList monospacedFonts = fonts.filter(QRegularExpression("Courier|Fixed")); Функция contains() показывает, содержит ли список заданную строку, а функция indexOf() возвращает индекс первого вхождения заданной строки. Функция lastIndexOf() возвращает индекс последнего вхождения строки.
Наконец, функция replaceInStrings() вызывает QString::replace() для каждой строки в списке строк по очереди. Например:
QStringList files;
files << "$QTDIR/src/moc/moc.y"
<< "$QTDIR/src/moc/moc.l"
<< "$QTDIR/include/qconfig.h";
files.replaceInStrings("$QTDIR", "/usr/lib/qt");
// files: [ "/usr/lib/qt/src/moc/moc.y", ...] См. также QString.
Документация по членам-функциям
QStringList::QStringList()
Создаёт пустой список строк.
QStringList::QStringList(const QString &str)
Создаёт список строк, содержащий заданную строку, str. Более длинные списки легко создаются таким образом:
QStringList longerList = (QStringList() << str1 << str2 << str3);
См. также append().
QStringList::QStringList(const QList<QString> &other)
Создаёт копию other.
Эта операция выполняется за постоянное время, поскольку QStringList использует неявное совместное использование. Это делает возврат QStringList из функции очень быстрым. Если изменён общий экземпляр, он будет скопирован (copy-on-write), и это займёт линейное время.
См. также operator=().
QStringList::QStringList(QList<QString> &&other)
Это перегруженная функция.
Перемещающее создание копии из QList<QString>.
После успешного создания other будет пустым.
Эта функция была введена в Qt 5.4.
QStringList::QStringList(std::initializer_list<QString> args)
Создаёт список из std::initializer_list, заданной args.
Этот конструктор разрешён только если компилятор поддерживает C++11 initializer lists.
Эта функция была введена в Qt 4.8.
bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Возвращает true , если список содержит строку str; в противном случае возвращает false. Поиск выполняется без учёта регистра, если cs равен Qt::CaseInsensitive; по умолчанию поиск выполняется с учётом регистра.
См. также indexOf(), lastIndexOf() и QString::contains().
bool QStringList::contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Это перегруженная функция.
Возвращает true , если список содержит строку str; в противном случае возвращает false. Поиск выполняется без учёта регистра, если cs равен Qt::CaseInsensitive; по умолчанию поиск выполняется с учётом регистра.
Эта функция была введена в Qt 5.10.
См. также indexOf(), lastIndexOf() и QString::contains().
bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Это перегруженная функция.
Возвращает true , если список содержит строку str; в противном случае возвращает false. Поиск выполняется без учёта регистра, если cs равен Qt::CaseInsensitive; по умолчанию поиск выполняется с учётом регистра.
Эта функция была введена в Qt 5.12.
QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Возвращает список всех строк, содержащих подстроку str.
Если cs равен Qt::CaseSensitive (по умолчанию), сравнение строк выполняется с учётом регистра; в противном случае сравнение выполняется без учёта регистра.
QStringList list;
list << "Bill Murray" << "John Doe" << "Bill Clinton";
QStringList result;
result = list.filter("Bill");
// result: ["Bill Murray", "Bill Clinton"] Это эквивалентно
QStringList result;
foreach (const QString &str, list) {
if (str.contains("Bill"))
result += str;
} См. также contains().
QStringList QStringList::filter(const QRegExp &rx) const
Это перегруженная функция.
Возвращает список всех строк, которые соответствуют регулярному выражению rx.
QStringList QStringList::filter(const QRegularExpression &re) const
Это перегруженная функция.
Возвращает список всех строк, которые соответствуют регулярному выражению re.
Эта функция была введена в Qt 5.0.
int QStringList::indexOf(const QRegExp &rx, int from = 0) const
Возвращает позицию индекса первого точного совпадения rx в списке, выполняя поиск вперёд с позиции индекса from. Возвращает -1, если ни один элемент не совпал.
См. также lastIndexOf(), contains() и QRegExp::exactMatch().
int QStringList::indexOf(QRegExp &rx, int from = 0) const
Эта функция перегружает indexOf().
Возвращает позицию индекса первого точного совпадения rx в списке, выполняя поиск вперёд с позиции индекса from. Возвращает -1, если ни один элемент не совпал.
Если элемент совпал, регулярное выражение rx будет содержать сопоставленные объекты (см. QRegExp::matchedLength, QRegExp::cap).
Эта функция была введена в Qt 4.5.
См. также lastIndexOf(), contains() и QRegExp::exactMatch().
int QStringList::indexOf(const QRegularExpression &re, int from = 0) const
Это перегруженная функция.
Возвращает позицию индекса первого точного совпадения re в списке, выполняя поиск вперёд с позиции индекса from. Возвращает -1, если ни один элемент не совпал.
Эта функция была введена в Qt 5.0.
См. также lastIndexOf().
QString QStringList::join(const QString &separator) const
Объединяет все строки списка в одну строку, разделяя каждый элемент заданным separator (который может быть пустой строкой).
См. также QString::split().
QString QStringList::join(QLatin1String separator) const
Эта функция перегружает join().
Эта функция была введена в Qt 5.8.
QString QStringList::join(QChar separator) const
Эта функция перегружает join().
Эта функция была введена в Qt 5.0.
int QStringList::lastIndexOf(const QRegExp &rx, int from = -1) const
Возвращает позицию индекса последнего точного совпадения rx в списке, выполняя поиск назад с позиции индекса from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если ни один элемент не совпал.
См. также indexOf(), contains() и QRegExp::exactMatch().
int QStringList::lastIndexOf(QRegExp &rx, int from = -1) const
Эта функция перегружает lastIndexOf().
Возвращает позицию индекса последнего точного совпадения rx в списке, выполняя поиск назад с позиции индекса from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если ни один элемент не совпал.
Если элемент совпал, регулярное выражение rx будет содержать сопоставленные объекты (см. QRegExp::matchedLength, QRegExp::cap).
Эта функция была введена в Qt 4.5.
См. также indexOf(), contains() и QRegExp::exactMatch().
int QStringList::lastIndexOf(const QRegularExpression &re, int from = -1) const
Это перегруженная функция.
Возвращает индекс последнего точного совпадения re в списке, выполняя поиск назад с индекса from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если ни один элемент не совпал.
Эта функция была добавлена в Qt 5.0.
См. также indexOf().
int QStringList::removeDuplicates()
Эта функция удаляет дублирующиеся элементы из списка. Элементы не обязательно должны быть отсортированы. Они сохраняют свой исходный порядок.
Возвращает количество удаленных элементов.
Эта функция была добавлена в Qt 4.5.
QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
Возвращает список строк, в которых каждый текст before заменён текстом after, где бы ни был найден текст before. Текст before сопоставляется с учётом регистра (если флаг cs установлен) или без учёта регистра.
Например:
QStringList list;
list << "alpha" << "beta" << "gamma" << "epsilon";
list.replaceInStrings("a", "o");
// list == ["olpho", "beto", "gommo", "epsilon"] См. также QString::replace().
QStringList &QStringList::replaceInStrings(const QRegExp &rx, const QString &after)
Это перегруженная функция.
Заменяет каждое вхождение регулярного выражения rx в каждой строке списка на after. Возвращает ссылку на список строк.
Например:
QStringList list;
list << "alpha" << "beta" << "gamma" << "epsilon";
list.replaceInStrings(QRegExp("^a"), "o");
// list == ["olpha", "beta", "gamma", "epsilon"] Для регулярных выражений, содержащих группы захвата, вхождения \1, \2, ..., в after заменяются на rx.cap(1), rx.cap(2), ...
Например:
QStringList list;
list << "Bill Clinton" << "Murray, Bill";
list.replaceInStrings(QRegExp("^(.*), (.*)$"), "\\2 \\1");
// list == ["Bill Clinton", "Bill Murray"] QStringList &QStringList::replaceInStrings(const QRegularExpression &re, const QString &after)
Это перегруженная функция.
Заменяет каждое вхождение регулярного выражения re в каждой строке списка на after. Возвращает ссылку на список строк.
Например:
QStringList list;
list << "alpha" << "beta" << "gamma" << "epsilon";
list.replaceInStrings(QRegularExpression("^a"), "o");
// list == ["olpha", "beta", "gamma", "epsilon"] Для регулярных выражений, содержащих группы захвата, вхождения \1, \2, ... в after заменяются на строку, захваченную соответствующей группой захвата.
Например:
QStringList list;
list << "Bill Clinton" << "Murray, Bill";
list.replaceInStrings(QRegularExpression("^(.*), (.*)$"), "\\2 \\1");
// list == ["Bill Clinton", "Bill Murray"] Эта функция была добавлена в Qt 5.0.
void QStringList::sort(Qt::CaseSensitivity cs = Qt::CaseSensitive)
Сортирует список строк в порядке возрастания. Если cs равно Qt::CaseSensitive (по умолчанию), сравнение строк выполняется с учётом регистра; в противном случае - без учёта регистра.
Сортировка выполняется с помощью алгоритма STL std::sort(), который имеет среднее время выполнения логарифмически-линейное, то есть O(n log n).
Если требуется сортировка в произвольном порядке, используйте класс QMap. Например, можно использовать QMap<QString, QString> для создания сортировки без учёта регистра (ключом будут служить строчные версии строк, а значениями - сами строки) или QMap<int, QString> для сортировки строк по целочисленному индексу.
QStringList QStringList::operator+(const QStringList &other) const
Возвращает список строк, являющийся конкатенацией этого списка строк и списка other.
См. также append().
QStringList &QStringList::operator<<(const QString &str)
Добавляет заданную строку str в этот список строк и возвращает ссылку на список строк.
См. также append().
QStringList &QStringList::operator<<(const QStringList &other)
Это перегруженная функция.
Добавляет список строк other в список строк и возвращает ссылку на последний список строк.
QStringList &QStringList::operator<<(const QList<QString> &other)
Это перегруженная функция.
Добавляет список строк other в список строк и возвращает ссылку на последний список строк.
Эта функция была добавлена в Qt 5.4.
QStringList &QStringList::operator=(const QList<QString> &other)
Оператор присваивания по копированию из QList<QString>. Присваивает список строк other этому списку строк.
После операции списки other и *this будут равны.
Эта функция была добавлена в Qt 5.4.
QStringList &QStringList::operator=(QList<QString> &&other)
Это перегруженная функция.
Оператор перемещающего присваивания из QList<QString>. Перемещает список строк other в этот список строк.
После операции список other будет пустым.
Эта функция была добавлена в Qt 5.4.
Связанные нечленённые функции
typedef QMutableStringListIterator
Тип QStringListIterator предоставляет итератор для QStringList в стиле Java без ограничений на изменение.
QStringList предоставляет как итераторы в стиле Java, так и итераторы в стиле STL. Непостоянный итератор в стиле Java просто является типом для QMutableListIterator<QString>.
См. также QStringListIterator и QStringList::iterator.
typedef QStringListIterator
Тип QStringListIterator предоставляет итератор для QStringList в стиле Java только для чтения.
QStringList предоставляет как итераторы в стиле Java, так и итераторы в стиле STL. Итератор в стиле Java только для чтения просто является типом для QListIterator<QString>.
См. также QMutableStringListIterator и QStringList::const_iterator.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qstringlist.html