—— 杭州 2023-12-03
code review!
https://doc.qt.io/qt-6/qstringlist.html
原文:
翻译:
在Qt中,遍历 QStringList
可以使用迭代器、foreach
循环或基于索引的循环。下面是这些遍历方法的详细说明:
使用迭代器:
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry";
QStringList::iterator it;
for (it = stringList.begin(); it != stringList.end(); ++it) {
qDebug() << *it;
}
```
使用迭代器可遍历 `QStringList`,通过 `begin()` 获取迭代器的起始位置,通过 `end()` 获取迭代器的结束位置。在循环中,使用 `*it` 来访问迭代器当前指向的元素。
使用 foreach
循环:
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry";
foreach (const QString& str, stringList) {
qDebug() << str;
}
```
``foreach` 循环提供了一种简洁的方式来遍历 `QStringList`。在每次迭代中,变量 `str` 将依次引用列表中的元素。
基于索引的循环:
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry";
for (int i = 0; i < stringList.size(); ++i) {
qDebug() << stringList.at(i);
}
基于索引的循环遍历 QStringList
可以使用下标运算符 []
或 at()
函数来访问列表中的元素。以下是基于索引的循环遍历的详细说明:
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry";
for (int i = 0; i < stringList.size(); ++i) {
QString str = stringList[i]; // 或者使用 stringList.at(i)
qDebug() << str;
}
在上述示例中,我们创建了一个 QStringList
对象 stringList
,其中包含多个字符串元素。然后,我们使用基于索引的循环遍历列表。在每次迭代中,我们使用下标运算符 []
或 at()
函数来获取列表中的元素并将其存储在 str
变量中。最后,我们输出 str
的值。
需要注意的是,索引从 0 开始,因此循环条件是 i < stringList.size()
。我们使用 size()
函数获取列表的大小。
以下是一个完整的示例代码:
#include
int main() {
QStringList fonts;
fonts << "Arial" << "Courier New" << "Times New Roman" << "Fixedsys";
QStringList monospacedFonts = fonts.filter(QRegularExpression("Courier|Fixed"));
qDebug() << "Monospaced Fonts:";
for (const QString& font : monospacedFonts) {
qDebug() << font;
}
return 0;
}
在这个示例中,我们先创建了一个 QStringList
对象 fonts
,并向其添加了几个字体名称。然后,使用 filter()
函数结合正则表达式 "Courier|Fixed"
筛选出包含 “Courier” 或 “Fixed” 的字体名称,并将结果存储在 monospacedFonts
中。
最后,通过遍历 monospacedFonts
,将筛选结果输出到调试输出中。
运行这段代码,你将得到如下输出结果:
Monospaced Fonts:
"Courier New"
"Fixedsys"
输出结果显示了满足条件的字体名称,即 “Courier New” 和 “Fixedsys”。这表明代码成功地筛选出了包含 “Courier” 或 “Fixed” 的字体名称。
QStringList
类提供了 lastIndexOf()
函数用于查找指定字符串在列表中最后出现的位置(索引)。
函数原型如下:
int lastIndexOf(const QString& value, int from = -1) const;
参数说明:
value
:要查找的字符串。from
:可选参数,指定开始搜索的索引位置,默认值为 -1,表示从列表的末尾开始搜索。函数返回值:
以下是一个示例,演示如何使用 lastIndexOf()
函数查找字符串在 QStringList
中最后出现的位置:
#include
int main() {
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry" << "Banana" << "Apple";
int lastIndex = stringList.lastIndexOf("Banana");
if (lastIndex != -1) {
qDebug() << "Last occurrence of 'Banana' found at index:" << lastIndex;
} else {
qDebug() << "No occurrence of 'Banana' found in the list.";
}
return 0;
}
在上述示例中,我们创建了一个 QStringList
对象 stringList
,其中包含多个字符串元素。然后,我们使用 lastIndexOf()
函数查找字符串 “Banana” 在列表中最后出现的位置,并将结果存储在 lastIndex
中。
最后,我们根据 lastIndex
的值输出相应的信息。
运行这段代码,你将得到如下输出结果:
Last occurrence of 'Banana' found at index: 3
输出结果表明,字符串 “Banana” 在列表中最后出现的位置是索引 3。
QStringList
类提供了 indexOf()
函数用于查找指定字符串在列表中第一次出现的位置(索引)。
函数原型如下:
int indexOf(const QString& value, int from = 0) const;
参数说明:
value
:要查找的字符串。from
:可选参数,指定开始搜索的索引位置,默认值为 0,表示从列表的开头开始搜索。函数返回值:
以下是一个示例,演示如何使用 indexOf()
函数查找字符串在 QStringList
中第一次出现的位置:
#include
int main() {
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry" << "Banana" << "Apple";
int firstIndex = stringList.indexOf("Banana");
if (firstIndex != -1) {
qDebug() << "First occurrence of 'Banana' found at index:" << firstIndex;
} else {
qDebug() << "No occurrence of 'Banana' found in the list.";
}
return 0;
}
在上述示例中,我们创建了一个 QStringList
对象 stringList
,其中包含多个字符串元素。然后,我们使用 indexOf()
函数查找字符串 “Banana” 在列表中第一次出现的位置,并将结果存储在 firstIndex
中。
最后,我们根据 firstIndex
的值输出相应的信息。
运行这段代码,你将得到如下输出结果:
First occurrence of 'Banana' found at index: 1
输出结果表明,字符串 “Banana” 在列表中第一次出现的位置是索引 1。
QStringList
类提供了一个成员函数 replaceInStrings()
,用于在列表中的每个字符串中进行替换操作。而 QString
类则提供了 replace()
函数,用于执行单个字符串的替换操作。
QStringList::replaceInStrings(const QString& before, const QString& after)
:
before
替换为 after
。QStringList
对象,将所有匹配的字符串进行替换。QStringList stringList;
stringList << "apple" << "banana" << "cherry";
stringList.replaceInStrings("a", "X");
// 输出结果: "Xpple", "bXnXnX", "cherry"
qDebug() << stringList;
```
QString::replace(const QString& before, const QString& after)
:
before
替换为 after
。QString
对象。QString str = "apple banana cherry";
QString replacedStr = str.replace("a", "X");
// 输出结果: "Xpple bXnXnX cherry"
qDebug() << replacedStr;
```
这两个函数都能执行字符串的替换操作,但 replaceInStrings()
是在 QStringList
对象的每个字符串中进行替换,而 replace()
是在单个字符串中进行替换。你可以根据自己的需求选择使用哪个函数。
QStringList
是Qt框架中的一个类,用于存储字符串列表。它提供了一组方法和操作,方便对字符串列表进行处理、访问和修改。
以下是QStringList
类的一些常用方法和操作的详细解释:
1. 构造函数和赋值操作符:
QStringList()
:默认构造函数,创建一个空的字符串列表。QStringList(const QStringList &other)
:拷贝构造函数,使用另一个字符串列表初始化当前列表。QStringList &operator=(const QStringList &other)
:赋值操作符,将另一个字符串列表赋值给当前列表。2. 添加和移除元素:
void append(const QString &str)
:向列表末尾添加一个字符串。void prepend(const QString &str)
:向列表开头添加一个字符串。void insert(int i, const QString &str)
:在指定位置插入一个字符串。void removeAt(int i)
:移除指定位置的字符串。void removeOne(const QString &str)
:移除第一个匹配给定字符串的元素。void removeAll(const QString &str)
:移除所有匹配给定字符串的元素。void clear()
:清空列表,移除所有元素。3. 获取和修改元素:
int size() const
:返回列表中元素的数量。bool isEmpty() const
:检查列表是否为空。QString at(int i) const
:返回指定位置的字符串。QString &operator[](int i)
:访问指定位置的字符串,可用于修改该元素。const QString &operator[](int i) const
:以只读方式访问指定位置的字符串。QStringList mid(int pos, int length = -1) const
:返回从指定位置开始的指定长度子列表。QStringList &replace(int i, const QString &str)
:将指定位置的字符串替换为给定字符串。QStringList &replace(const QString &before, const QString &after)
:将所有匹配给定字符串的元素替换为新的字符串。4. 其他常用方法:
bool contains(const QString &str) const
:检查列表中是否包含给定字符串。int indexOf(const QString &str, int from = 0) const
:返回第一个匹配给定字符串的位置。int lastIndexOf(const QString &str, int from = -1) const
:返回最后一个匹配给定字符串的位置。QString join(const QString &separator) const
:将列表中的所有元素连接为一个字符串,使用给定的分隔符分隔。QStringList
提供了方便的方法来处理字符串列表,如添加、移除、访问和修改元素等。它在Qt中广泛用于处理和操作字符串集合的场景,例如配置文件解析、日志记录、命令行参数处理等。
QStringList
和 QList
都是Qt中用于存储字符串的容器类,但它们在实现和使用上有一些区别。
类型差异:
QStringList
是一个专门用于存储字符串的类,是 QString
类的派生类,可以直接使用 QString
的成员函数。QList
是一个通用的列表类,可以存储任意类型的元素,其中的元素类型指定为 QString
。头文件和命名空间:
QStringList
类定义在
头文件中,属于 Qt
命名空间。QList
类定义在
头文件中,同样属于 Qt
命名空间。成员函数和使用:
QStringList
类提供了一些特定于字符串列表的成员函数,如 join()
、split()
、contains()
等。QList
类提供了通用的列表操作函数,如 append()
、insert()
、remove()
等。QStringList
是 QString
的派生类,可以直接使用 QString
类的成员函数。隐式转换:
QStringList
对象可以隐式转换为 QList
对象,即可以将 QStringList
类型的对象赋值给 QList
类型的变量。QList
对象不能隐式转换为 QStringList
对象。在实践中,QStringList
通常用于处理字符串的特定需求,如字符串的拆分和合并,而 QList
则更通用,适用于任意类型的元素的存储和操作。如果你只需要存储字符串,推荐使用 QStringList
,如果需要存储其他类型的元素,可以使用 QList
。
在Qt中,QStringList
提供了几种方法来添加和组合字符串:
append(const QString& str)
:该函数用于将指定的字符串添加到 QStringList
的末尾。例如:QStringList stringList;
stringList.append("Apple");
stringList.append("Banana");
在上述示例中,我们使用 append()
函数将字符串 “Apple” 和 “Banana” 添加到 stringList
中。
operator<<(const QString& str)
:该运算符重载函数也可以用于将字符串添加到 QStringList
的末尾。例如:QStringList stringList;
stringList << "Apple" << "Banana";
这个运算符的使用方式类似于使用 append()
函数。
operator+(const QStringList& other)
:该运算符重载函数用于将两个 QStringList
进行连接。它会返回一个新的 QStringList
,包含两个操作数的所有元素。例如:QStringList list1;
list1 << "Apple" << "Banana";
QStringList list2;
list2 << "Cherry" << "Durian";
QStringList combinedList = list1 + list2;
在上述示例中,我们使用 operator+()
运算符将 list1
和 list2
进行连接,得到一个新的 combinedList
,其中包含所有元素。
需要注意的是,operator+()
运算符返回的是一个新的 QStringList
,原始的操作数 list1
和 list2
不会被修改。
这些函数和运算符提供了不同的方式来添加和组合字符串,可以根据具体的需求选择使用哪种方式。
QStringList(const QString &str)
QStringList(const QList &other)
QStringList(QList &&other)
bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool contains(QLatin1StringView 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 QRegularExpression &re) const
qsizetype indexOf(const QRegularExpression &re, qsizetype from = 0) const
QString join(const QString &separator) const
QString join(QStringView separator) const
QString join(QLatin1StringView separator) const
QString join(QChar separator) const
qsizetype lastIndexOf(const QRegularExpression &re, qsizetype from = -1) const
qsizetype 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 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 &other)
QStringList & operator=(const QList &other)
QStringList & operator=(QList &&other)
class const_iterator
class iterator
ConstIterator
Iterator
const_pointer
const_reference
const_reverse_iterator
difference_type
parameter_type
pointer
reference
reverse_iterator
rvalue_ref
size_type
value_type
QStringList(const QString &)
QStringList(const QList &)
QStringList(QList &&)
append(QList::parameter_type)
append(QList::rvalue_ref)
append(const QList &)
append(QList &&)
assign(qsizetype, QList::parameter_type) : QList &
assign(InputIterator, InputIterator) : QList &
assign(std::initializer_list) : QList &
at(qsizetype) const : QList::const_reference
back() : QList::reference
back() const : QList::const_reference
begin() : QList::iterator
begin() const : QList::const_iterator
capacity() const : qsizetype
cbegin() const : QList::const_iterator
cend() const : QList::const_iterator
clear()
constBegin() const : QList::const_iterator
constData() const : QList::const_pointer
constEnd() const : QList::const_iterator
constFirst() const : const T &
constLast() const : const T &
contains(const QString &, Qt::CaseSensitivity) const : bool
contains(const AT &) const : bool
contains(QLatin1StringView, Qt::CaseSensitivity) const : bool
contains(QStringView, Qt::CaseSensitivity) const : bool
count(const AT &) const : qsizetype
count() const : qsizetype
crbegin() const : QList::const_reverse_iterator
crend() const : QList::const_reverse_iterator
data() : QList::pointer
data() const : QList::const_pointer
emplace(qsizetype, Args &&...) : QList::iterator
emplace(QList::const_iterator, Args &&...) : QList::iterator
emplaceBack(Args &&...) : QList::reference
emplace_back(Args &&...) : QList::reference
empty() const : bool
end() : QList::iterator
end() const : QList::const_iterator
endsWith(QList::parameter_type) const : bool
erase(QList::const_iterator) : QList::iterator
erase(QList::const_iterator, QList::const_iterator) : QList::iterator
fill(QList::parameter_type, qsizetype) : QList &
filter(const QString &, Qt::CaseSensitivity) const : QStringList
filter(QStringView, Qt::CaseSensitivity) const : QStringList
filter(const QRegularExpression &) const : QStringList
first() : T &
first() const : const T &
first(qsizetype) const : QList
front() : QList::reference
front() const : QList::const_reference
indexOf(const AT &, qsizetype) const : qsizetype
indexOf(const QRegularExpression &, qsizetype) const : qsizetype
insert(qsizetype, QList::parameter_type) : QList::iterator
insert(qsizetype, qsizetype, QList::parameter_type) : QList::iterator
insert(QList::const_iterator, QList::parameter_type) : QList::iterator
insert(QList::const_iterator, qsizetype, QList::parameter_type) : QList::iterator
insert(QList::const_iterator, QList::rvalue_ref) : QList::iterator
insert(qsizetype, QList::rvalue_ref) : QList::iterator
isEmpty() const : bool
join(const QString &) const : QString
join(QStringView) const : QString
join(QLatin1StringView) const : QString
join(QChar) const : QString
last() : T &
last() const : const T &
last(qsizetype) const : QList
lastIndexOf(const AT &, qsizetype) const : qsizetype
lastIndexOf(const QRegularExpression &, qsizetype) const : qsizetype
length() const : qsizetype
mid(qsizetype, qsizetype) const : QList
move(qsizetype, qsizetype)
pop_back()
pop_front()
prepend(QList::rvalue_ref)
prepend(QList::parameter_type)
push_back(QList::parameter_type)
push_back(QList::rvalue_ref)
push_front(QList::rvalue_ref)
push_front(QList::parameter_type)
rbegin() : QList::reverse_iterator
rbegin() const : QList::const_reverse_iterator
remove(qsizetype, qsizetype)
removeAll(const AT &) : qsizetype
removeAt(qsizetype)
removeDuplicates() : qsizetype
removeFirst()
removeIf(Predicate) : qsizetype
removeLast()
removeOne(const AT &) : bool
rend() : QList::reverse_iterator
rend() const : QList::const_reverse_iterator
replace(qsizetype, QList::parameter_type)
replace(qsizetype, QList::rvalue_ref)
replaceInStrings(const QString &, const QString &, Qt::CaseSensitivity) : QStringList &
replaceInStrings(QStringView, QStringView, Qt::CaseSensitivity) : QStringList &
replaceInStrings(const QString &, QStringView, Qt::CaseSensitivity) : QStringList &
replaceInStrings(QStringView, const QString &, Qt::CaseSensitivity) : QStringList &
replaceInStrings(const QRegularExpression &, const QString &) : QStringList &
reserve(qsizetype)
resize(qsizetype)
resize(qsizetype, QList::parameter_type)
shrink_to_fit()
size() const : qsizetype
sliced(qsizetype, qsizetype) const : QList
sliced(qsizetype) const : QList
sort(Qt::CaseSensitivity)
squeeze()
startsWith(QList::parameter_type) const : bool
swap(QList &)
swapItemsAt(qsizetype, qsizetype)
takeAt(qsizetype) : T
takeFirst() : QList::value_type
takeLast() : QList::value_type
value(qsizetype) const : T
value(qsizetype, QList::parameter_type) const : T
operator!=(const QList &) const : bool
operator+(const QStringList &) const : QStringList
operator+(const QList &) const : QList
operator+(const QList &) : QList
operator+(QList &&) const : QList
operator+(QList &&) : QList
operator+=(const QList &) : QList &
operator+=(QList &&) : QList &
operator+=(QList::parameter_type) : QList &
operator+=(QList::rvalue_ref) : QList &
operator<(const QList &) const : bool
operator<<(const QString &) : QStringList &
operator<<(QList::parameter_type) : QList &
operator<<(const QStringList &) : QStringList &
operator<<(const QList &) : QList &
operator<<(const QList &) : QStringList &
operator<<(QList &&) : QList &
operator<<(QList::rvalue_ref) : QList &
operator<=(const QList &) const : bool
operator=(const QList &) : QStringList &
operator=(std::initializer_list) : QList &
operator=(QList &&) : QStringList &
operator=(const QList &) : QList &
operator=(QList &&) : QList &
operator==(const QList &) const : bool
operator>(const QList &) const : bool
operator>=(const QList &) const : bool
operator[](qsizetype) : QList::reference
operator[](qsizetype) const : QList::const_reference