Spec-Zone.ru › Qt 5.6

Класс 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
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(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 предоставляет несколько удобных функций, которые упрощают работу со списками строк:

Добавление строк

Строки можно добавить в список, используя функции append(), operator+=() и operator<<(). Например:

    QStringList fonts;
    fonts << "Arial" << "Helvetica" << "Times" << "Courier";

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

Для итерации по списку вы можете использовать либо позиции индексов, либо итераторы типа 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 может быть одиночным символом, строкой или QRegExp.

Кроме того, функция operator+() позволяет конкатенировать два списка строк в один. Для сортировки списка строк используйте функцию sort().

Список строк QString также предоставляет функцию filter(), которая позволяет извлечь новый список, содержащий только те строки, которые содержат определённую подстроку (или соответствуют определённому регулярному выражению):

    QStringList monospacedFonts = fonts.filter(QRegExp("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().

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

QStringList предоставляет итераторы по стилю Java и STL. Итератор Java без const просто определяет тип QMutableListIterator<QString>.

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

typedef QStringListIterator

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

QStringList предоставляет итераторы по стилю Java и STL. Итератор Java с const просто определяет тип 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.6/qstringlist.html

Spec-Zone.ru

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