Spec-Zone.ru › Qt

Класс QStringList

Класс QStringList предоставляет список строк. Подробнее...

Заголовок: #include <QStringList>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QList
  • Список всех членов, включая унаследованные члены

Примечание: Все функции в этом классе являются реентерабельными.

Открытые функции

QStringList(QList<QString> &&other)
QStringList(const QList<QString> &other)
QStringList(const QString &str)
QStringList & operator=(QList<QString> &&other)
QStringList & operator=(const QList<QString> &other)
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(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringList filter(const QRegularExpression &re) const
qsizetype indexOf(const QRegularExpression &re, qsizetype from = 0) const
QString join(const QString &separator) const
QString join(QStringView separator) const
QString join(QLatin1String separator) const
QString join(QChar separator) const
qsizetype lastIndexOf(const QRegularExpression &re, qsizetype from = -1) const
qsizetype removeDuplicates()
QStringList & replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QStringList & replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QStringList & replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QStringList & replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
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)

Связанные внешние члены

QMutableStringListIterator
QStringListIterator

Подробное описание

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";

Итерация по строкам

Для итерации по списку вы можете использовать либо индексные позиции, либо типы итераторов в стиле Java и стиле STL из QList:

Индексирование:

    for (int i = 0; i < fonts.size(); ++i)
         cout << fonts.at(i).toLocal8Bit().constData() << Qt::endl;

Итератор в стиле Java:

    QStringListIterator javaStyleIterator(fonts);
    while (javaStyleIterator.hasNext())
         cout << javaStyleIterator.next().toLocal8Bit().constData() << Qt::endl;

Итератор в стиле STL:

    QStringList::const_iterator constIterator;
    for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
           ++constIterator)
        cout << (*constIterator).toLocal8Bit().constData() << Qt::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.

Кроме того, функция 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.

Документация по функциям-членам

[since 5.4] QStringList::QStringList(QList<QString> &&other)

Это перегруженная функция.

Перемещающее конструирование из QList<QString>.

После успешного конструирования other будет пустым.

Эта функция была добавлена в Qt 5.4.

QStringList::QStringList(const QList<QString> &other)

Создаёт копию other.

Эта операция занимает постоянное время, потому что QStringList неявно разделяется. Это делает возврат QStringList из функции очень быстрым. Если изменён общий экземпляр, он будет скопирован (copy-on-write), что занимает линейное время.

См. также operator=().

QStringList::QStringList(const QString &str)

Создаёт список строк, содержащий заданную строку str. Более длинные списки легко создаются таким образом:

    QStringList longerList = (QStringList() << str1 << str2 << str3);

См. также append().

[since 5.4] QStringList &QStringList::operator=(QList<QString> &&other)

Это перегруженная функция.

Оператор перемещающего присваивания из QList<QString>. Перемещает список строк other в этот список строк.

После операции other будет пустым.

Эта функция была добавлена в Qt 5.4.

[since 5.4] QStringList &QStringList::operator=(const QList<QString> &other)

Оператор копирующего присваивания из QList<QString>. Присваивает список строк other этому списку строк.

После операции other и *this будут равны.

Эта функция была добавлена в Qt 5.4.

bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Возвращает true если список содержит строку str; в противном случае возвращает false. Поиск выполняется без учёта регистра, если cs равно Qt::CaseInsensitive; по умолчанию поиск учитывает регистр.

См. также indexOf(), lastIndexOf() и QString::contains().

[since 5.10] bool QStringList::contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Это перегруженная функция.

Возвращает true если список содержит строку str; в противном случае возвращает false. Поиск выполняется без учёта регистра, если cs равно Qt::CaseInsensitive; по умолчанию поиск учитывает регистр.

Эта функция была добавлена в Qt 5.10.

См. также indexOf(), lastIndexOf() и QString::contains().

[since 5.12] 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().

[since 5.14] QStringList QStringList::filter(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.14.

[since 5.0] QStringList QStringList::filter(const QRegularExpression &re) const

Это перегруженная функция.

Возвращает список всех строк, соответствующих регулярному выражению re.

Эта функция была добавлена в Qt 5.0.

[since 5.0] qsizetype QStringList::indexOf(const QRegularExpression &re, qsizetype from = 0) const

Это перегруженная функция.

Возвращает позицию индекса первого точного совпадения re в списке, выполняя поиск вперёд с позиции индекса from. Возвращает -1, если ни один элемент не совпал.

Эта функция была добавлена в Qt 5.0.

См. также lastIndexOf().

QString QStringList::join(const QString &separator) const

Объединяет все строки списка в одну строку, разделяя каждый элемент заданным separator (который может быть пустой строкой).

См. также QString::split().

[since 5.14] QString QStringList::join(QStringView separator) const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.14.

[since 5.8] QString QStringList::join(QLatin1String separator) const

Эта функция перегружает join().

Эта функция была добавлена в Qt 5.8.

[since 5.0] QString QStringList::join(QChar separator) const

Эта функция перегружает join().

Эта функция была добавлена в Qt 5.0.

[since 5.0] qsizetype QStringList::lastIndexOf(const QRegularExpression &re, qsizetype from = -1) const

Это перегруженная функция.

Возвращает позицию индекса последнего точного совпадения re в списке, выполняя поиск назад с позиции индекса from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если ни один элемент не совпал.

Эта функция была добавлена в Qt 5.0.

См. также indexOf().

qsizetype QStringList::removeDuplicates()

Эта функция удаляет дублирующиеся записи из списка. Записи не должны быть отсортированы. Они сохранят свой исходный порядок.

Возвращает количество удалённых записей.

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().

[since 5.14] QStringList &QStringList::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Это перегруженная функция.

Эта функция была добавлена в Qt 5.14.

[since 5.14] Список строк &СписокСтрок::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Это перегруженный метод.

Этот метод был представлен в Qt 5.14.

[since 5.14] Список строк &СписокСтрок::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Это перегруженный метод.

Этот метод был представлен в Qt 5.14.

[since 5.0] Список строк &СписокСтрок::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 СписокСтрок::sort(Qt::CaseSensitivity cs = Qt::CaseSensitive)

Сортирует список строк в порядке возрастания. Если cs имеет значение Qt::CaseSensitive (по умолчанию), сравнение строк выполняется с учетом регистра; в противном случае сравнение выполняется без учета регистра.

Сортировка выполняется с помощью алгоритма std::sort() из STL, который имеет среднее время выполнения логарифмически-линейное, то есть O(n log n).

Если необходимо отсортировать строки в произвольном порядке, воспользуйтесь классом QMap. Например, вы можете использовать QMap<QString, QString> для создания сортировки без учета регистра (например, ключами являются строчные версии строк, а значениями — сами строки), или QMap<int, QString> для сортировки строк по некоторому целочисленному индексу.

Список строк СписокСтрок::operator+(const Список строк &other) const

Возвращает список строк, являющийся результатом конкатенации текущего списка строк и списка other.

См. также append().

Список строк &СписокСтрок::operator<<(const QString &str)

Добавляет заданную строку str в конец списка строк и возвращает ссылку на список строк.

См. также append().

Список строк &СписокСтрок::operator<<(const Список строк &other)

Это перегруженный метод.

Добавляет список строк other в конец списка строк и возвращает ссылку на последний список.

[since 5.4] Список строк &СписокСтрок::operator<<(const QList<QString> &other)

Это перегруженный метод.

Добавляет список строк other в конец списка строк и возвращает ссылку на последний список.

Этот метод был представлен в Qt 5.4.

Связанные нечленные методы

[alias] QMutableСписокСтрокИтератор

Тип QStringListIterator предоставляет итератор для QStringList по аналогии с Java.

QStringList предоставляет как итераторы в стиле Java, так и итераторы в стиле STL. Итератор в стиле Java — это просто определение типа QMutableListIterator<QString>.

См. также QStringListIterator и QStringList::iterator.

[alias] QStringListИтератор

Тип QStringListIterator предоставляет константный итератор для QStringList по аналогии с Java.

QStringList предоставляет как итераторы в стиле Java, так и итераторы в стиле STL. Константный итератор в стиле Java — это просто определение типа QListIterator<QString>.

См. также QMutableСписокСтрокИтератор и QStringList::const_iterator.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qstringlist.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API