Класс QStringList
Класс QStringList предоставляет список строк. Подробнее...
| Заголовок: | #include <QStringList> |
| qmake: | QT += core |
| Наследует: | QList |
Примечание: Все функции в этом классе являются взаимоисключающими.
Открытые функции
| QStringList(InputIterator first, InputIterator last) | |
| 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(QStringView 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(QStringView 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(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
| QStringList & | replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
| QStringList & | replaceInStrings(QStringView 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";
Итерация по строкам
Для итерации по списку можно использовать либо индексы, либо итераторы QList в стиле Java и STL:
Индексирование:
for (int i = 0; i < fonts.size(); ++i)
cout << fonts.at(i).toLocal8Bit().constData() << Qt::endl; Итератор в стиле Java:
QStringListIterator javaStyleIterator(fonts);
while (javaStyleIterator.hasNext())
cout << javaStyleIterator.next().toLocal8Bit().constData() << Qt::endl; Итератор в стиле STL:
QStringList::const_iterator constIterator;
for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
++constIterator)
cout << (*constIterator).toLocal8Bit().constData() << Qt::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.
Документация по функциям-членам
template <typename InputIterator> QStringList::QStringList(InputIterator first, InputIterator last)
Создаёт QStringList со содержимым в диапазоне итераторов [first, last).
Тип значения InputIterator должен быть преобразуем к типу QString.
Эта функция была добавлена в Qt 5.14.
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(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Это перегруженная функция.
Эта функция была добавлена в Qt 5.14.
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().
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(QStringView separator) const
Это перегруженный функция.
Функция была введена в Qt 5.14.
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(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
Это перегруженный функция.
Функция была введена в Qt 5.14.
QStringList &QStringList::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
Это перегруженный функция.
Функция была введена в Qt 5.14.
QStringList &QStringList::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
Это перегруженный функция.
Функция была введена в Qt 5.14.
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, ..., в после заменяются строкой, захваченной соответствующей группой захвата.
Например:
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 QMutableStringListIterator
Тип QStringListIterator предоставляет итератор в стиле Java для QStringList без модификатора const.
QStringList предоставляет итераторы в стиле Java и STL. Итератор в стиле Java без модификатора const — это просто тип QMutableListIterator<QString>.
См. также QStringListIterator и QStringList::iterator.
typedef QStringListIterator
Тип QStringListIterator предоставляет итератор в стиле Java для QStringList с модификатором 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/qt-5.15/qstringlist.html