Spec-Zone.ru › Qt 5.12

Класс 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

Spec-Zone.ru

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