QStringList 与 QString 的相互转化

本文介绍了QStringList如何通过join函数转化为QString,以及QString如何使用split函数拆分成QStringList。join函数以指定分隔符连接字符串列表,split函数则按分隔符拆分字符串,两者在构建和解析SQL语句时非常实用。分隔符可以是空格或其他字符,split函数还提供了保留空格和大小写敏感的选项。

一、QStringList 转化成 QString - 使用 join 函数

join 函数将 QStringList 中的所有字符串用一个分隔符连接起来变成一个字符串。例:

strlist中有5个字符串,使用join将它们连起来,以逗号作为分隔符。结果为:

这个在组sql语句时还挺有用的,值得一提的是分隔符还支持空格。

 

二、QString 转化成 QStringList - 使用 split 函数

join 函数是将 QStringLis t转为 QString,split 就是和它对着干的,用于拆分字符串。同样它也需要传入一个分隔符。例:

将上一个例子中 join 连接起来的字符串进行拆分,结果为:

拆分后得到的列表和原列表的值一样。

 

【注】:

split 有三个参数:

第一个是分隔符,

第二个参数表示拆分的结果否保留空格,

第三个参数表示分隔符否大小写敏感。

Qt 中,如果你有多个 `QStringList`,并希望生成它们的**笛卡尔积(Cartesian Product)**,也就是所有可能的组合方式,可以使用递归或迭代的方式实现。 --- ## ✅ 示例:Qt 多个 QStringList 的组合 下面是一个完整的示例,展示如何将多个 `QStringList` 组合成所有可能的字符串组合: ```cpp #include <QCoreApplication> #include <QStringList> #include <QVector> #include <QDebug> // 递归函数:生成多个 QStringList 的笛卡尔积 void generateCombinations(const QVector<QStringList>& lists, int index, QStringList& current, QVector<QStringList>& result) { if (index == lists.size()) { result.append(current); // 所有列表都已处理完,保存当前组合 return; } const QStringList& currentList = lists[index]; for (const QString& item : currentList) { current.append(item); generateCombinations(lists, index + 1, current, result); current.removeLast(); // 回溯 } } // 主函数:接收多个 QStringList,返回所有组合 QVector<QStringList> combineStringLists(const QVector<QStringList>& lists) { QVector<QStringList> result; QStringList current; generateCombinations(lists, 0, current, result); return result; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 准备多个 QStringList QVector<QStringList> input = { {"A", "B"}, {"1", "2"}, {"X", "Y"} }; // 生成组合 QVector<QStringList> combinations = combineStringLists(input); // 输出结果 qDebug() << "Total combinations:" << combinations.size(); for (const auto& combo : combinations) { qDebug() << combo.join(" - "); } return a.exec(); } ``` --- ### 📌 解释说明: - **`generateCombinations` 函数**: - 使用递归和回溯法逐层选择每个 `QStringList` 中的元素。 - 每当遍历到最后一层时,就将当前组合保存到 `result` 中。 - **`combineStringLists` 函数**: - 接收一个 `QVector<QStringList>`,即多个字符串列表。 - 调用递归函数开始组合。 - **输出示例**(输入为 3 个列表,每个含 2 项): ``` Total combinations: 8 A - 1 - X A - 1 - Y A - 2 - X A - 2 - Y B - 1 - X B - 1 - Y B - 2 - X B - 2 - Y ``` --- ### ✅ 可扩展性优化建议: - 如果你希望组合后的每一行是拼接好的字符串,可以在递归中直接使用 `QString` 拼接。 - 若数据量非常大,可以考虑改用迭代方式减少栈溢出风险。 - 可以封装成模板函数支持任意类型(如 `QVector<QList<T>>`)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值