Spec-Zone.ru › Qt 5.13

Класс QStringList

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

Заголовок: #include <QStringList>
qmake: QT += core
Наследует: QList
  • Список всех членов, включая унаследованные члены

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

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

QStringList(std::initializer_list<QString> args)
QStringList(QList<QString> &&other)
QStringList(const QList<QString> &other)
QStringList(const QString &str)
QStringList()
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(const QRegExp &rx) const
QStringList filter(const QRegularExpression &re) const
int indexOf(const QRegExp &rx, int from = 0) const
int indexOf(QStringView str, int from = 0) const
int indexOf(QLatin1String str, 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(QStringView str, int from = -1) const
int lastIndexOf(QLatin1String str, 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)

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

typedef QMutableStringListIterator
typedef 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() << 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(std::initializer_list<QString> args)

Создаёт список из std::initializer_list, заданного args.

Этот конструктор активен только если компилятор поддерживает C++11 initializer lists.

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

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

QStringList::QStringList()

Создаёт пустой список строк.

QStringList &QStringList::operator=(QList<QString> &&other)

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

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

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

Эта функция была добавлена в Qt 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().

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(QStringView str, int from = 0) const

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

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

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

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

int QStringList::indexOf(QLatin1String str, int from = 0) const

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

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

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

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

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

END_OF_DOCUMENT_MARKER

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(QStringView str, int from = -1) const

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

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

Этот метод был добавлен в Qt 5.13.

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

int QStringList::lastIndexOf(QLatin1String str, int from = -1) const

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

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

Этот метод был добавлен в Qt 5.13.

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

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 сопоставляется чувствительно или нечувствительно к регистру в зависимости от флага 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.

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

typedef QStringList::QMutableStringListIterator

Определение типа QStringListIterator предоставляет итератор по типу Java для QStringList без модификации.

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

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

typedef QStringList::QStringListIterator

Определение типа QStringListIterator предоставляет итератор по типу Java для чтения QStringList.

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.13/qstringlist.html

Spec-Zone.ru

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