Класс 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 |
| bool | contains(QLatin1String 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 предоставляет несколько удобных функций, которые облегчают работу со списками строк:
Инициализация
Конструктор по умолчанию создаёт пустой список. Вы можете использовать конструктор с инициализирующим списком для создания списка с элементами:
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()
Создаёт пустой список строк.
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().
bool QStringList::contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Это перегруженная функция.
Возвращает true, если список содержит строку str; в противном случае возвращает false. Поиск выполняется без учёта регистра, если cs равен Qt::CaseInsensitive; поиск выполняется с учётом регистра по умолчанию.
Эта функция была добавлена в Qt 5.10.
См. также 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 установлен в Qt::CaseSensitive) или без учёта регистра (если он не установлен).
Например:
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 (по умолчанию), сравнение строк выполняется с учётом регистра; в противном случае - без учёта регистра.
Сортировка выполняется с помощью алгоритма std::sort() из STL, у которого среднее время выполнения линейно-логарифмическое, т.е. 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/archives/qt-5.11/qstringlist.html