Класс QStringList
Класс QStringList предоставляет список строк. Подробнее...
| Заголовок: | #include <QStringList> |
| qmake: | QT += core |
| Наследует: | QList |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| 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(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(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(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() << 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(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(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().
END_OF_DOCUMENT_MARKERint 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(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(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.
Связанные нечлены
typedef QStringList::QMutableStringListIterator
Определение типа QStringListIterator предоставляет итератор по типу Java для QStringList без модификации.
QStringList предоставляет как итераторы по типу Java, так и итераторы по типу STL. Итератор по типу Java без модификации — это просто определение типа QMutableListIterator<QString>.
См. также QStringListIterator и QStringList::iterator.
typedef QStringList::QStringListIterator
Определение типа QStringListIterator предоставляет итератор по типу Java для чтения QStringList.
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.13/qstringlist.html