QString提供了支持Unicode的字符串处理方法。
头文件:
#include
qmake设置:
QT += core
// 建立一个空的字符串,length=0
QString string;
// 上面一句默认执行的就是下面的构造方法
string = QString((const char *)0);
// isNull 输出true
qDebug() << string.isNull() << endl;
// length 输出0
qDebug() << string.length() << endl;
// isEmpty 输出true
qDebug() << string.isEmpty() << endl;
// 下面空字符串不是null,输出false
qDebug() << QString("").isNull() << endl;
// 下面空字符串,输出true
qDebug() << QString("").isEmpty() << endl;
QString b="Hello";
// 下面长度输出5
qDebug() << b.length() << endl();
QString c="Hello";
// 下面组合字符串,输出Hello World
qDebug() << c.append(" World") << endl();
// 在前面插入字符
qDebug() << c.prepend(" ") << endl();
// 字符串格式化输出
QString firstName( "Zhang" );
QString lastName( "San" );
QString fullName;
fullName = QString( "First name is %1, last name is %2" ).arg( firstName, lastName );
// 与下面一句等价
fullName = QString( "First name is %1, last name is %2" ).arg( firstName).arg(lastName );
// 输出 "First name is Zhang, last name is San"
qDebug() << fullName << endl;
const QString string( "Hello World!" );
// 输出第3个位置的字符
qDebug() << string.at(3) << endl;
// 判断是否包含目标字符串
QString str1="Hello my world";
// N=true,不区分大小写
bool N1=str1.contains ("he", Qt::CaseInsensitive) ;
// N=false,区分大小写
bool N2=str1.contains ("he", Qt::CaseSensitive) ;
// 判断开头和结尾
QString str2="Hello my world";
bool N3=str2.endsWith ("ld", Qt::CaseInsensitive) ; // N=true,不区分大小写
bool N4=str2.endsWith ("LD", Qt::CaseSensitive) ; // N=false,区分大小写
bool N5=str2.startsWith ("he") ; // N=true,缺省为不区分大小写
// 字符串转整形
QString string("10");
int b = string.toInt();
// 字符串转浮点
QString string("10.2");
float b = string.toFloat();
格式化输出:
QString string("10");
float b = string.toFloat();
string=string.asprintf ("%.3f",b);
qDebug() << string << endl;
// 以下几句等价
str=QString::number(total,'f',2);
str=QString::asprintf ("%.2f", total);
str=str.setNum(total,'f',2);
str=str.sprintf ("%.2f,total);
其它一些类型转换方法:
// 转整型
int toInt(bool * ok = Q_NULLPTR, int base = 10) const
long toLong (bool * ok = Q_NULLPTR, int base = 10) const
short toShort (bool * ok = Q_NULLPTR, int base = 10) const
uint toUInt (bool *ok = Q_NULLPTR, int base = 10) const
ulong toULong (bool *ok = Q_NULLPTR, int base = 10) const
// 转浮点型
double toDouble(bool *ok = Q_NULLPTR) const
float toFloat (bool * ok = Q_NULLPTR) const
// 程序原型
Qstring &setNum (int n, int base = 10)
QString number (int n, int base = 10)
// 示例1,10进制转16进制、2进制显示
QString str("15");
int val=str.toInt();//缺省为十进制
// str=QString::number(val, 16);//转换为十六进制的字符串
str=str.setNum (val, 16); //十六进制
str=str.toUpper();
// 下面输出F
qDebug() << str << endl;
str=str.setNum (val, 2) ; //二进制
// 下面输出1111
qDebug() << str << endl;
// 示例2,二进制转十进制、十六进制
QString str("1111");
bool ok;
int val = str.toInt(&ok, 2);
QString str1=QString::number (val, 10) ;//数字显示为十进制字符串
// 输出15
qDebug() << str1 << endl;
QString str2=str.setNum (val, 16) ; //显示为十六进制
str2=str2.toUpper();
// 输出F
qDebug() << str2 << endl;