一、操作字符串类
QString 类相对于 传统C++ 的字符串(以 \0 结尾的C语言风格 and String类), 提供 QString 更为强大,保存16位Unicode的值,使用 隐式共享和内存分配策略 优化。
1、操作字符串
#include <QCoreApplication>
#include <QDebug>int main(int argc, char *argv[]){QCoreApplication a(argc, argv);
// 操作字符串QString str = "abc"; // abcqDebug() << str << endl; // 输出str = str + "def"; // abcdefqDebug() << str << endl;// 追加 + 或者 appendstr.append("qwe");qDebug() << str << endl;// sprintfstr.sprintf("%s", "123"); // 123qDebug() << str << endl;str.sprintf("%s %s", "123", "456"); // 123 456qDebug() << str << endl;// arg()函数 可以处理多种类型的数据类型 安全QString str11;str11 = QString("%1 and %2 are friends! %3").arg("husky").arg("cc").arg(1314);qDebug() << str11 << endl;// 其他组合字符串的方法QString str1 = "123";QString str2 = "qwe";QString str3 = "asd";str1.insert(2, "abc"); // 12abc3qDebug() << str1 << endl;str2.prepend(str3); // asdqweqDebug() << str2 << endl;str3.replace(QRegExp("as"), "qqq"); // qqqdqDebug() << str3 << endl;// 移除字符串两端的空白字符str = " 123 \t \n 456 ";//str.trimmed();qDebug() << str.trimmed() << endl; // "123 \t \n 456"str = " 123 \t \n 456 ";//str.simplified();qDebug() << str.simplified() << endl; // "123 456"
return a.exec();}
2、查询字符串数据
// 查询字符串数据 QString str4 = "123 456 789"; QString str5 = "qwe"; QString str6 = "asd"; // 是否以 str 开头 / 结尾 if (str4.startsWith("123", Qt::CaseSensitive)) { qDebug() << "yes 是以 123 开头" << endl; } else { qDebug() << "no" << endl; } if (str4.endsWith("456")) { qDebug() << "yes 是以 456 结尾" << endl; } else { qDebug() << "no" << endl; } // 是否包含 if (str4.contains("456")) { qDebug() << "yes" << endl; } // < > <= >= == != 和 C++ 中的一样 // localeAwareCompare(a, b) compare() // a > b 返回正值 a < b 负值 a==b 0 qDebug() << QString::localeAwareCompare(str5, str6) << endl; qDebug() << QString::compare(str6, str5) << endl;
// 查询字符串数据QString str4 = "123 456 789";QString str5 = "qwe";QString str6 = "asd";// 是否以 str 开头 / 结尾if (str4.startsWith("123", Qt::CaseSensitive)){
qDebug() << "yes 是以 123 开头" << endl;}
else{
qDebug() << "no" << endl;}
if (str4.endsWith("456")){
qDebug() << "yes 是以 456 结尾" << endl;}
else{
qDebug() << "no" << endl;}
// 是否包含if (str4.contains("456")){
qDebug() << "yes" << endl;}
// < > <= >= == != 和 C++ 中的一样// localeAwareCompare(a, b) compare()// a > b 返回正值 a < b 负值 a==b 0qDebug() << QString::localeAwareCompare(str5, str6) << endl;qDebug() << QString::compare(str6, str5) << endl;3、字符串的转换
// 字符串的转换 str = "1256"; bool ok; // 转化是否成功 // 第二个参数为 基数 0->C语言的转化方法 以0开头->基数为8 0x开头->基数16 // 其他 10 str.toInt(&ok, 10); // toFloat() toDouble() // 注: QByteArray 既可以存储原始字节 也可以 存储 \0 结尾的传统字符串
4、NUll字符串与空字符串的区别
// NULL 与 空字符串 区别 QString().isNull(); // true QString().isEmpty(); // true QString("").isNull(); // false QString("").isEmpty(); // true
// NULL 与 空字符串 区别QString().isNull(); // trueQString().isEmpty(); // trueQString("").isNull(); // falseQString("").isEmpty(); // true二、容器类
相对于C++中的,更安全、轻量、容易使用,速度,内存优化Qt的数据必须是可以赋值的数据类型, 也就是必须提供一个默认构造函数, 复制构造函数, 赋值操作运算符(QObject和其他子类(QWidget、Qdialog))不可以存放在容器内~!不过可以用指针化解。
(具体的操作和c++中模板类似, 需要去查帮助文档)
1.Qlist类(小内存直接存放到数组,大内存存储指向对象指针)
最常用的2.QLinkedList类(链式存储)
3.QVector类(连续存储)
4.QMAP类(C++)
5.QHash类(C++)
6.迭代器的使用(两种方式 java and C++)
7.QVariant类:相当于一个c++联合数据类型,可以存储超多类型的值
三、算法(几乎就是q加功能)及正则表达式
正则表达式:表达式 + 量词 + 断言// 一些简单的算法 double aa = 10.0, bb = 20.0; double cc = qMax(aa, bb); double dd = -12; dd = qAbs(dd); int bn = qRound(bb); qSwap(aa, bb);