Qt扫盲-QStringList字符串列表总结

QStringList理论使用总结

  • 一、概述
  • 二、常用功能
    • 1. 初始化
    • 2. 添加字符串
    • 3. 遍历字符串
    • 4. 拼接、分割字符串
    • 4. 筛选字符串

一、概述

QStringList 继承自QList< QString>。功能和QList一样,QStringList也是隐式共享的。它提供了快速的基于索引的访问以及快速的插入和删除操作。将字符串列表作为值参数传递既快速又安全。一般我也是会用这个的,很多Qt的api接口也会用到这个类型作为接口。QList的所有功能也适用于QStringList。

二、常用功能

例如,你可以使用isEmpty()来测试列表是否为空,还可以调用append()、prepend()、insert()、replace()、removeAll()、removeAt()、removeFirst()、removeLast() 和removeOne()等函数来修改QStringList。基本上我们能想到的功能,Qt 都做了封装,此外,QStringList提供了一些方便的函数,使处理字符串列表更容易:

1. 初始化

默认构造函数创建一个空列表。使用initializer-list构造函数可以创建包含元素的列表:

QStringList fonts = { "Arial", "Helvetica", "Times" };

2. 添加字符串

字符串可以使用insert() append()、+=() 运算符和 <<() 运算符函数添加到列表中。
<<()运算符可以方便地在列表中添加多个元素:

fonts << "Courier" << "Verdana";

3. 遍历字符串

要遍历一个列表,你可以使用索引位置,也可以使用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-style迭代器:

QStringList::const_iterator constIterator;

for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd(); ++constIterator)
	cout << (*constIterator).toLocal8Bit().constData() << Qt::endl;

QStringListIterator类只是QListIterator的类型定义。QStringList还提供了QMutableStringListIterator类,这是QMutableStringListIterator 的类型定义。

4. 拼接、分割字符串

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。

此外,运算符+()函数允许你将两个字符串列表连接为一个。要对字符串列表进行排序,可以使用函数 sort()。

4. 筛选字符串

QString列表还提供了filter()函数,它允许您提取仅包含包含特定子字符串(或匹配特定正则表达式)的字符串的新列表:

QStringList monospacedFonts = fonts.filter(QRegularExpression("Courier|Fixed"));

contains()函数指出列表中是否包含给定的字符串,而indexOf()函数返回给定字符串第一次出现的索引。另一方面,lastIndexOf()函数返回的是字符串最后一次出现的索引。
最后,replacestrings()函数依次对字符串列表中的每个字符串调用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", ...]

你可能感兴趣的:(#,▶,Qt扫盲,QStringList,QStringList,理论,Qt字符串链表,qt)