Qt
大约 2 分钟
Qt
目录
QString字符串类
标准C++提供了两种字符串,而Qt提供了QString字符串类
- C语言风格的以“\0”字符结尾的字符数组(C++)
- 字符串类String(C++)
- Qt字符串类QString(Qt)
QString类
保存16位Unicode值,提供丰富的操作、查询和转换等函数
进行了隐式共享
(implicit sharing)、高效的内存分配策略
等优化
注意:QString输出时是带双引号的
符号操作
+
,组合字符串+=
,组合字符串=
,可以用双引号引起来的C类型字符串构造函数
字符串函数 - 组合字符类
QString::append()
,尾部追加字符串- 与+=操作符功能相同
- 例:
str1.append("world");
QString::sprintf()
,格式化组合字符串- 格式定义与C++库中函数sprintf()定义的一样
- 例:
str.sprintf("%s %s","Hello ","World!")
QString:arg()
,格式化组合字符串- 相对于
QString::sprintf()
,QString:arg()
是一个比较好的解决方案:类型安全,完全支持Unicode,允许改变%n
参数的顺序 - 例:
str = QString(".%1 was born in %2.").arg("John").arg(1998);
- 相对于
insert()
,原字符串特定位置插入另一字符串prepend()
,原字符串开头插入另一字符串replace()
,用自定字符串代替原字符串中某些字符QString::trimmed()
,移除字符串两端的空白字符QString::simplified()
,移除字符串两端的空白字符,使用单个空格字符“ ”代替字符串中出现的空白字符
字符串函数 - 查询字符串类
QString::startsWith()
,判断一个字符串是否以某个字符串开头。第一个参数指定一个字符串,第二个参数指定是否大小写敏感,默认是QString::endsWith()
,判断一个字符串是否以某个字符串结尾QString::contains()
,判断一个字符串是否出现过
字符串函数 - 比较两个字符串
operator<(const QString&)
operator<=(const QString&)
operator==(const QString&)
operator>=(const QString&)
localeAwareCompare(const QString&, const QString&)
compare(const QString&, const QString&, Qt::CaseSensitivity)
字符串函数 - 字符串的转换
字符串转换为数值类型
QString::toInt()
QString::toDouble()
QString::toFloat()
QString::toLongLong()
字符串转换为其他字符编码集。会返回一个const char*
类型版本的QByteArray
toAscii()
toLatin1()
toUtf8()
toLocal8Bit()
隐式共享(又称回写复制)
《Qt5开发及实例》P52
内存分配策略
《Qt5开发及实例》P53
QString
- 头文件
#include <QString>
(但好像不加也行,不知道被哪个头文件给包含了)
- 方法
- 格式化字符串:
QString("x=%1 y=%2").arg(x).arg(y);
- 格式化字符串:
- 补充
- 类似于string类
- 打印出来是带引号的,解决方法:
qstring.toUtf8().data()
(先转换成QByteArray再转成char *)
QStringList / QList<QString>
- 头文件
- (但好像不加也行,不知道被哪个头文件给包含了)
- 使用
QStringList list1; list1 << "1" << "2";
,调用list1[i]
QList<QString> list2; list2 << "1" << "2";
,调用list2.at(i);
QDebug(调式输出)
- 头文件
#include <QDebug>
- 使用
qDebug() << "调试信息";
或者qDebug("调试信息");
(但我用后者时好像不行)