网站怎么让百度收录,成都网站设计推荐,建筑做网站,在vs2010里怎么做网站QT学习笔记#xff08;十一#xff09;#xff1a;QString类1、概述2、编辑操作3、查询操作3、转换操作1、概述
1.1 QString 类是 Qt 中用于表示字符串的类#xff0c;实现在 QtCore 共享库中。QString 类在实现上有以下特征:
1#xff09;字符串采用 Unicode 内部编码十一QString类1、概述2、编辑操作3、查询操作3、转换操作1、概述
1.1 QString 类是 Qt 中用于表示字符串的类实现在 QtCore 共享库中。QString 类在实现上有以下特征:
1字符串采用 Unicode 内部编码可以表示世界上大多数语言的文字; 2字符串的存储有引用计数当一个 QString 对象被复制为另一个 QString 对象时它们实际上指向相同的存储空间仅仅是增加一个引用计数; 3隐式共享在后台QString使用隐式共享来减少内容使用和避免不必要的复制这也有助于减少储存16为字符的固有开销只有当函数向它写入时才会复制该数据或者当指向相同存储空间的多个 QString 对象中的一个要被修改时才将真正复制一个新的字符串并进行修改。 1.2 构造函数
Qstring(); // 构造空字符串QString(QChar ch); // 由 QChar 对象 ch构造QString(const QChar *pch, int size); // 由 QChar 数组pch构造size 是数组大小QString(const QString obj); // 拷贝构造函数QString(const char *str); // 由字符串 str 构造str是一个普通字符串参考博客QT之QString 官方说明QString Class
2、编辑操作 编辑操作QT控制台程序 示例
#include QCoreApplication
#include QDebug
#include QStringListint main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() QObject::tr(以下是编辑字符串操作) endl;QString str hello;// 执行下面一行代码大小为5qDebug() QObject::tr(字符串大小) str.size(); str[0] QChar(H); // 将第一个字符换为‘H// 执行下面一行代码结果为‘HqDebug() QObject::tr(第一个字符) str[0]; str.append( Qt); // 向字符串后添加Qtstr.replace(1,4,i); // 将第1个字符开始的后面4个字符替换为字符串istr.insert(2, my); // 在第2个字符后插入 my// 执行下面一行代码结果为Hi my QtqDebug() QObject::tr(str为) str; str str !!!; // 将两个字符串组合// 执行下面一行代码结果为Hi my QtqDebug() QObject::tr(str为) str; str hi\r\n Qt!\n ;qDebug() QObject::tr(str为) str;QString str1 str.trimmed(); // 除去字符串两端的空白字符qDebug() QObject::tr(str1为) str1;QString str2 str.simplified(); // 除去字符串两端和中间多余的空白字符//结果为hi QtqDebug() QObject::tr(str2为) str2; str hi,my,,Qt;// 从字符串中有,的地方将其分为多个子字符串// QString::SkipEmptyParts表示跳过空的条目QStringList list str.split(,,QString::SkipEmptyParts);// 执行下面一行代码结果为hi,my,QtqDebug() QObject::tr(str拆分后为) list; str list.join( ); // 将各个子字符串组合为一个字符串中间用 隔开// 执行下面一行代码结果为hi my QtqDebug() QObject::tr(list组合后为) str; qDebug() QString().isNull(); // 结果为trueqDebug() QString().isEmpty(); // 结果为trueqDebug() QString().isNull(); // 结果为falseqDebug() QString().isEmpty(); // 结果为truereturn a.exec();
}运行结果
3、查询操作 查询操作QT控制台程序 示例
#include QCoreApplication
#include QDebug
#include QStringListint main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() endl QObject::tr(以下是在字符串中进行查询的操作) endl;str yafeilinux;qDebug() QObject::tr(字符串为) str;// 结果为linuxqDebug() QObject::tr(包含右侧5个字符的子字符串) str.right(5);// 结果为yafeiqDebug() QObject::tr(包含左侧5个字符的子字符串) str.left(5);// 结果为feiqDebug() QObject::tr(包含第2个字符以后3个字符的子字符串) str.mid(2, 3);//结果为2qDebug() QObject::tr(fei的位置) str.indexOf(fei); //结果为yqDebug() QObject::tr(str的第0个字符) str.at(0); //结果为2qDebug() QObject::tr(str中i字符的个数) str.count(i); // 结果为trueqDebug() QObject::tr(str是否以”ya“开始) str.startsWith(ya);// 结果为trueqDebug() QObject::tr(str是否以”linux“结尾) str.endsWith(linux);// 结果为trueqDebug() QObject::tr(str是否包含”lin“字符串) str.contains(lin);QString temp hello;// 两字符串进行比较结果为yafeilinuxif(temp str) qDebug() temp; else qDebug() str;qDebug() endl QObject::tr(以下是字符串的转换操作) endl;str 100;// 结果为100qDebug() QObject::tr(字符串转换为整数) str.toInt(); int num 45;//结果为45qDebug() QObject::tr(整数转换为字符串) QString::number(num);str FF;bool ok;int hex str.toInt(ok, 16);// 结果为oktrue 255qDebug() ok: ok QObject::tr(转换为十六进制) hex;num 26;//结果为1aqDebug() QObject::tr(使用十六进制将整数转换为字符串) QString::number(num, 16);str 123.456;//结果为123.456qDebug() QObject::tr(字符串转换为浮点型) str.toFloat();str abc;// 结果为ABCqDebug() QObject::tr(转换为大写) str.toUpper();str ABC;// 结果为abcqDebug() QObject::tr(转换为小写) str.toLower();int age 25;QString name yafei;// name代替%1age代替%2str QString(name is %1, age is %2).arg(name).arg(age);// 结果为name is yafei, age is 25qDebug() QObject::tr(更改后的str为) str;str %1 %2;// 结果为%1f helloqDebug() str.arg(%1f,hello); // 结果为hellof %2 qDebug() str.arg(%1f).arg(hello); str QString(ni%1).arg(hi,5,*);//结果为ni***hiqDebug() QObject::tr(设置字段宽度为5使用*填充) str;qreal value 123.456;str QString(number: %1).arg(value,0,f,2);//结果为number:123.45qDebug() QObject::tr(设置小数点位数为两位) str; // 执行下面一行代码结果为number:123.45不会显示引号qDebug() QObject::tr(将str转换为const char* :) qPrintable(str);return a.exec();
}运行结果
3、转换操作
关于QString::arg()函数详解请参见 QT学习笔记六QString::arg()函数用法小结. 转换操作QT控制台程序 示例
#include QCoreApplication
#include QDebug
#include QStringListint main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() endl QObject::tr(以下是字符串的转换操作) endl;str 100;// 结果为100qDebug() QObject::tr(字符串转换为整数) str.toInt(); int num 45;//结果为45qDebug() QObject::tr(整数转换为字符串) QString::number(num);str FF;bool ok;int hex str.toInt(ok, 16);// 结果为oktrue 255qDebug() ok: ok QObject::tr(转换为十六进制) hex;num 26;//结果为1aqDebug() QObject::tr(使用十六进制将整数转换为字符串) QString::number(num, 16);str 123.456;//结果为123.456qDebug() QObject::tr(字符串转换为浮点型) str.toFloat();str abc;// 结果为ABCqDebug() QObject::tr(转换为大写) str.toUpper();str ABC;// 结果为abcqDebug() QObject::tr(转换为小写) str.toLower();int age 25;QString name yafei;// name代替%1age代替%2str QString(name is %1, age is %2).arg(name).arg(age);// 结果为name is yafei, age is 25qDebug() QObject::tr(更改后的str为) str;str %1 %2;// 结果为%1f helloqDebug() str.arg(%1f,hello); // 结果为hellof %2 qDebug() str.arg(%1f).arg(hello); str QString(ni%1).arg(hi,5,*);//结果为ni***hiqDebug() QObject::tr(设置字段宽度为5使用*填充) str;qreal value 123.456;str QString(number: %1).arg(value,0,f,2);//结果为number:123.45qDebug() QObject::tr(设置小数点位数为两位) str; // 执行下面一行代码结果为number:123.45不会显示引号qDebug() QObject::tr(将str转换为const char* :) qPrintable(str);return a.exec();
}运行结果