Класс 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";
Итерация по строкам
Для итерации по списку можно использовать либо позиции индексов, либо итераторы стиля Java и STL класса QList:
Индексирование:
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.
Документация по функциям-членам
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.
Эта функция была представлена в Qt 4.8.
QStringList::QStringList(QList<QString> &&other)
Это перегруженная функция.
Перемещающее создание копии из QList<QString>.
После успешного создания other будет пустым.
Эта функция была представлена в Qt 5.4.
QStringList::QStringList(const QList<QString> &other)
Создаёт копию other.
Эта операция выполняется за константное время, поскольку QStringList неявно использует совместное владение. Это делает возвращение QStringList из функции очень быстрым. Если совместно используемый экземпляр изменяется, он будет скопирован (копирование при записи), и это занимает линейное время.
См. также 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.14/qstringlist.html