qt字符串与字符串数组操作

本文详细介绍了QString的各种操作方法,包括字符串的定义、连接、拆分、转换以及与不同数据类型之间的相互转换。同时,还展示了如何使用QStringList进行字符串列表的管理和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//QString定义
QString s1 = “abc”;
QString s2(“hello”);
/

## /字符串连接

QString s = s1 + s2;

//组包
s = QString(“a = %1, b = %2, c = %3”).arg(250).arg(“hello”).arg(22.22);
qDebug()<<s;
//输出结果:a = 250, b = hello, c = 22.22

s = “a=250,b=hello,c=22.22”;
//参数表示按逗号分隔, 拆分出第0段到第1段, 保存到tmp
QString tmp = s.section(",", 0, 1);
qDebug()<<"tmp = "<<tmp;
//输出结果:tmp=“a=250”

tmp = tmp.section("=", 1, 1);
qDebug()<<“tmp=”<<tmp;
//输出结果:tmp=“250”;

//QString转int
int a = tmp.toInt();
qDebug()<<“a=”<<a;
//输出结果:a=250;

//int转QString组包方式转
tmp = QString("%1").arg(123);
qDebug()<<“tmp=”<<tmp;
//输出结果:tmp=“123”

//int转QString函数方式转
tmp = QString::number(234);

*//char 转QString
const char * buf = “hello, world”;
QString ss = buf;
qDebug()<<"ss = "<< ss;

//std::string转QString
string s = “hello, world”
QString ss = QString::fromStdString(s);
qDebug()<<"ss = "<< ss;

//std::wstring转QString
std::wstring wstr(L"你好, 世界");
QString ss = QString::fromStdWString(wstr);
qDebug()<<"ss = "<< ss;

//字符数组转QString
char buf2[100] = “hello world”;
ss = buf2;
qDebug()<<"ss = "<<ss;

**//QString转char ***
ss = “hello abc”;
//如果没有中文:
QByteArray tmp = ss.toLatin1();
char * buf3 = tmp.data();
//如果有中文:
QByteArray tmp = ss.toLocal8Bit();
char * buf4 = tmp.data();

//替换QString中字符串
QString text(“text-decoration: none”);
text.replace(“none”, “underline”);

//去除QString首尾的空格(包括’\t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’)
QString text(" text-decoration: none ");
text = text.trimmed();

//判断QString是否空
QString().isEmpty(); // return true
QString("").isEmpty(); // return true
QString(" ").isEmpty(); // return false
QString(“abc”).isEmpty(); // return false

QString().isNull(); // return true
QString("").isNull(); // return false
QString(" ").isNull(); // return false
QString(“abc”).isNull(); // return false
QStringList

//定义
QStringList list;
//添加字符串
list << “hello”;
list << “world”;
list.append(“abc”);
//例子2
QStringList chinaMonth;
chinaMonth
<< QStringLiteral(“正月”)
<< QStringLiteral(“二月”)
<< QStringLiteral(“三月”)
<< QStringLiteral(“四月”)
<< QStringLiteral(“五月”)
<< QStringLiteral(“六月”)
<< QStringLiteral(“七月”)
<< QStringLiteral(“八月”)
<< QStringLiteral(“九月”)
<< QStringLiteral(“十月”)
<< QStringLiteral(“冬月”)
<< QStringLiteral(“腊月”)
;
//打印
qDebug()<< “list =”<< list;
//遍历
for(int i = 0; i< list.size();++i)
{
QString tmp = list.at(i);
qDebug()<<“tmp =”<< tmp;
}

//使用QStringList拆分QString
QString str = “hello,world,abc,qt”;
QStringList list2 = str.split(",");
qDebug()<<“list2=”<<list2;
//输出:list2=(“hello”,“world”,“abc”,“qt”);

//判断QStringList中是否包含某个成员
bool b = list2.contains(“123”);

//移除QStringList中的成员
list2.removeOne(“abc”);

### QT 中 QString 和 QStringList 的基本概念 在 Qt 编程环境中,`QString` 是用于表示 Unicode 字符串的主要类。而 `QStringList` 则是一个专门用来存储多个 `QString` 对象的容器[^1]。 ### 创建和初始化 QStringList 可以像创建其他列表一样来创建并填充一个 `QStringList`: ```cpp QStringList list; list << "First Item" << "Second Item"; ``` 或者直接使用构造器进行初始化: ```cpp QStringList list = {"Item 1", "Item 2"}; ``` ### 使用 split 函数获取 QStringList 当需要将单个较长的字符串按照特定分隔符分割成若干部分时,可调用 `QString::split()` 方法实现这一功能。此方法返回的是一个 `QStringList` 类型的结果集[^2]。 例如,假设有一个由逗号连接的名字序列 `"Alice,Bob,Charlie"` ,可以通过如下方式将其转换为名字列表: ```cpp QString namesString = "Alice,Bob,Charlie"; QStringList nameList = namesString.split(','); qDebug() << nameList; // 输出: ("Alice", "Bob", "Charlie") ``` 对于更复杂的场景下(比如存在连续空白字符),还可以传递额外参数给 `split()` 来控制行为模式,如忽略空项等选项。 ### 遍历 QStringList 遍历整个 `QStringList` 可以采用迭代器或是简单的 foreach 循环语句完成: ```cpp foreach (const QString &name, nameList) { qDebug() << name; } ``` 也可以利用标准库算法配合 lambda 表达式来进行操作: ```cpp std::for_each(nameList.begin(), nameList.end(), [](const QString& str){ qDebug() << str; }); ``` ### 常见错误及注意事项 如果尝试从用户输入读取多词短语到 `QStringList` 中,则需要注意默认情况下 C++ 流不会自动按单词边界解析数据流;此时应该考虑自定义 locale 或者借助于 QDataStream 进行更加精细的数据提取工作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值