Класс 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(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 предоставляет несколько функций, которые облегчают работу со списками строк:
Добавление строк
Строки могут быть добавлены в список с помощью функций 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 может быть одиночный символ, строка, QRegularExpression или (устаревший) QRegExp.
Кроме того, функция operator+() позволяет объединить два списка строк в один. Для сортировки списка строк используйте функцию sort().
Список строк также предоставляет функцию 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().
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.9/qstringlist.html