Spec-Zone.ru › Qt 5.11

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

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

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

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

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

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 установлен в Qt::CaseSensitive) или без учёта регистра (если он не установлен).

Например:

    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 (по умолчанию), сравнение строк выполняется с учётом регистра; в противном случае - без учёта регистра.

Сортировка выполняется с помощью алгоритма std::sort() из STL, у которого среднее время выполнения линейно-логарифмическое, т.е. 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/archives/qt-5.11/qstringlist.html

Spec-Zone.ru

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