学习记录,不断更新
QString和QByteArray的转换
QByteArray cstr = s.toLatin1();
QByteArray cstr("abcd");
QString s = cstr;
QString 查询操作
qDebug() << QObject::tr("字符串大小:") << str.size(); // 大小为5
str[0] = QChar('H'); // 将第一个字符换为'H'
qDebug() << QObject::tr("第一个字符:") << str[0]; // 结果为'H'
str.append(" Qt"); // 向字符串后添加"Qt"
str.replace(1,4,"i"); // 将第1个字符开始的后面4个字符替换为字符串"i"
str.insert(2," my"); // 在第2个字符后插入" my"
qDebug() << QObject::tr("str为:") << str; // 结果为Hi my Qt
str.remove(1,1); // 将第1个字符后1个字符删除
qDebug() << QObject::tr("str为:") << str; // 结果为H my Qt
str = str + "!!!"; // 将两个字符串组合
qDebug() << QObject::tr("str为:") << str; // 结果为Hi my Qt!!!
str = " hi\r\n Qt!\n ";
qDebug() << QObject::tr("str为:") << str;
QString str1 = str.trimmed(); // 除去字符串两端的空白字符
qDebug() << QObject::tr("str1为:") << str1;
QString str2 = str.simplified(); // 除去字符串两端和中间多余的空白字符
qDebug() << QObject::tr("str2为:") << str2; // 结果为hi Qt!
str = "hi,my,,Qt";
QStringList list = str.split(",",QString::SkipEmptyParts);// 从字符串中有","的地方将其分为多个子字符串,QString::SkipEmptyParts表示跳过空的条目
qDebug() << QObject::tr("str拆分后为:") << list; // 结果为hi,my,Qt
str = list.join(" "); // 将各个子字符串组合为一个字符串,中间用" "隔开
qDebug() << QObject::tr("list组合后为:") << str; // 结果为hi my Qt
qDebug() << QString().isNull(); // 结果为true
qDebug() << QString().isEmpty(); // 结果为true
qDebug() << QString("").isNull(); // 结果为false
qDebug() << QString("").isEmpty(); // 结果为true
QString 查询操作
qDebug() << QObject::tr("字符串为:") << str;
qDebug() << QObject::tr("包含右侧5个字符的子字符串:") << str.right(5); // 结果为linux
qDebug() << QObject::tr("包含左侧5个字符的子字符串:") << str.left(5); // 结果为yafei
qDebug() << QObject::tr("包含第2个字符以后3个字符的子字符串:") << str.mid(2,3); //结果为fei
qDebug() << QObject::tr("'fei'的位置:") <<str.indexOf("fei"); // 结果为2
qDebug() << QObject::tr("str的第0个字符:") << str.at(0); // 结果为y
qDebug() << QObject::tr("str中'i'字符的个数:") << str.count('i'); // 结果为2
qDebug() << QObject::tr("str是否以”ya“开始?") << str.startsWith("ya"); // 结果为true
qDebug() << QObject::tr("str是否以”linux“结尾?") << str.endsWith("linux"); // 结果为true
qDebug() << QObject::tr("str是否包含”lin“字符串?") << str.contains("lin"); // 结果为true
QString temp = "hello";
if(temp > str) qDebug() << temp; // 两字符串进行比较,结果为yafeilinux
else qDebug() << str;
QString 转换操作
str = "100";
qDebug() << QObject::tr("字符串转换为整数:") << str.toInt(); //结果为100
int num = 45;
qDebug() << QObject::tr("整数转换为字符串:") << QString::number(num); // 结果为"45" 将数转化为字符串 还可以指定转换为哪种进制
str = "FF";
bool ok;
int hex = str.toInt(&ok,16);
qDebug() << "ok: "<< ok << QObject::tr("转换为十六进制:") << hex; // 结果为ok:true 255
num = 26;
qDebug() << QObject::tr("使用十六进制将整数转换为字符串:")
<< QString::number(num,16); //结果为1a
str = "123.456";
qDebug() << QObject::tr("字符串转换为浮点型:") << str.toFloat(); // 结果为123.456
str = "abc";
qDebug() << QObject::tr("转换为大写:") << str.toUpper(); // 结果为ABC
str = "ABC";
qDebug() << QObject::tr("转换为小写:") <<str.toLower(); // 结果为abc
int age = 25;
QString name = "yafei";
str = QString("name is %1, age is %2").arg(name).arg(age); // name代替%1,age代替%2
qDebug() << QObject::tr("更改后的str为:") << str; // 结果为name is yafei,age is 25
str = "%1 %2";
qDebug() << str.arg("%1f","hello"); // 结果为%1f hello
qDebug() << str.arg("%1f").arg("hello"); // 结果为hellof %2
QString还有一种重载形式
QString QString::arg(
double
a,
int
fieldWidth = 0,
char
format =
'g'
,
int
precision = -1, QChar fillChar = QLatin1Char(
' '
))
第1个参数:double类型,第3个参数:format,指定类型,第4个参数是精度
对于'e','E','f'精度表示为小数点后面位数
对于'g','G'精度表示为有效数字最大位数
qreal value = 123.456;str = QString("number: %1").arg(value,0,'f',2);qDebug() << QObject::tr("设置小数点位数为两位:") << str;// 结果为"number:123.45"qDebug() << QObject::tr("将str转换为const char* :") << qPrintable(str);// 结果为number:123.45,不会显示引号double d = 12.345689;
str = QString("delta: %1").arg(d, 0, 'g',4);
//输出为:"delta: 12.35" ---这里进行了四舍五入 有效数字最大位为4
str = QString("delta: %1").arg(d, 0, 'G',5);
//输出为:"delta: 12.346" ---这里进行了四舍五入 有效数字最大位为4
str = QString("delta: %1").arg(d, 0, 'e',4);
//输出为:"delta: 1.234e+01"
str = QString("delta: %1").arg(d, 0, 'E',4);
//输出为:"delta: 1.234E+01"
QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) )
fieldWidth表示字符宽度,base表示进制 最后一个参数表示是设置字符来填充
str = QString("Decimal 63 is %1 in hexadecimal").arg(63, 0, 16);
// str == "Decimal 63 is 3f in hexadecimal"
str = QString("ni%1").arg("hi",5,'*');qDebug() << QObject::tr("设置字段宽度为5,使用'*'填充:") << str; // 结果为ni***hi
QString.sprintf()字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。用法可以百度,qt中尽量用QString::arg();