QString的使用

学习记录,不断更新


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();


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值