QStringList字符串列表类

QStringList类提供字符串列表。
QStringList继承自QList<QString>。与QList一样,QStringList是隐式共享的。它提供了快速的基于索引的访问以及快速的插入和删除。将字符串列表作为值参数传递既快速又安全。
QList的所有功能也适用于QStringList。例如,你可以使用isEmpty()来测试列表是否为空,你可以调用append()、prepend()、insert()、replace()、removeAll()、moveAt()、remoteFirst()、raveLast()和removeOne()等函数来修改QStringList。此外,QStringList提供了一些方便的函数,使处理字符串列表更容易。

一、基本概念
类定义:QStringList 继承自 QList<QString>,因此它拥有 QList 的所有功能和特性,并针对字符串列表进行了优化。

用途:用于存储和操作一系列的 QString 对象。

二、基本操作
1. 创建和初始化
QStringList list; // 创建一个空的 QStringList  
QStringList listWithElements = {"Apple", "Banana", "Cherry"}; // 使用初始化列表  
  
QStringList listFromSingleString = QStringList() << "Single Item"; // 使用 << 操作符添加单个元素

2. 添加和移除元素
list << "Date"; // 在列表末尾添加元素  
list.prepend("Orange"); // 在列表开头添加元素  
  
bool removed = list.removeOne("Banana"); // 移除列表中第一个匹配的元素,返回是否成功  
  
list.removeAt(0); // 移除指定索引的元素

3. 访问元素
QString firstItem = list.first(); // 获取第一个元素  
QString lastItem = list.last(); // 获取最后一个元素  
  
QString itemAtIndex = list.at(2); // 通过索引访问元素,索引从0开始  
  
foreach(QString item, list) { // 遍历列表  
    qDebug() << item;  
}  
  
for(int i = 0; i < list.size(); ++i) {  
    qDebug() << list[i]; // 使用 [] 操作符访问元素  
}

4. 排序和查找
list.sort(); // 默认按字典顺序排序  
  
// 使用自定义比较函数排序  
bool compare(const QString &s1, const QString &s2) {  
    return s1.toLower() < s2.toLower(); // 不区分大小写的比较  
}  
list.sort(compare);  
  
int index = list.indexOf("Cherry"); // 查找元素并返回索引,未找到返回-1

三、高级特性
1. 字符串分割与合并
QString text = "Apple,Banana,Cherry";  
QStringList listFromSplit = text.split(","); // 使用split方法分割字符串  
QString joinedText = listFromSplit.join(", "); // 使用join方法合并列表,可指定分隔符

2. 过滤和筛选
虽然 QStringList 没有直接的过滤函数,但可以使用 std::copy_if(需要包含 <algorithm> 和 <iterator>)或 Qt 的 QFilterProxyModel(针对更复杂的模型/视图编程)来实现筛选功能。

3. 字符串替换
虽然 QStringList 本身不提供直接的字符串替换功能,但你可以遍历列表并对每个元素使用 QString 的 replace 方法。

注意事项
1.当你对 QStringList 进行修改时(如添加、移除元素),其内部指针可能会重新分配,因此保持对元素的直接引用或指针可能不安全。

2.排序时,如果列表很大,应考虑排序操作的性能影响。

                        
原文链接:https://blog.csdn.net/weixin_45843323/article/details/140138878

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在QString中截取字符串,有几种方法可以实现。一种方法是使用QString的mid函数。该函数的原型是QString QString::mid(int position, int n = -1) const。其中position是指定截取字符串的起始位置,n是指定截取字符串的长度。如果n为-1或超过可用字符串的长度,则返回自position开始的全部字符串。另一种方法是使用QString的split函数分割字符串。先将QString转换为字符串型,然后使用split函数将其分割成一个QStringList。例如,如果要按照"/"分割日期字符串,则可以使用以下代码: QString date = dateEdit.toString("yyyy/MM/dd"); QStringList list = date.split("/"); 这样就可以得到一个包含分割后的子字符串QStringList对象。此外,如果你想使用std::string来截取字符串,你可以使用std::basic_string的substr函数。substr函数的原型是:std::basic_string::substr(size_type __pos, size_type __n) const或basic_string substr(size_type pos = 0, size_type count = npos)。其中__pos是指定截取字符串的起始位置,__n是指定截取字符串的长度。以上是qstring截取字符串的几种方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Qt QString字符串分割、截取](https://blog.csdn.net/qq_17313923/article/details/115655088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值