QString(详解)

本文详细介绍了Qt中QString类的各种操作,包括字符串的转换(QString到char*)、字符串拼接、分割(split、mid等函数)、去除空白、查找与替换、以及常见问题的解决方案,如中文乱码处理。此外,还提供了数字转换为字符串的方法和字符串截断技巧。

目录

一、QString转char*

二、合并字符串

三、分割字符串

·split()函数

·mid(pos,n)函数

·QString::section

·truncate(int)函数,从指定位置截断字符串str

四、去除字符串两端的空白

·QString::trimmed()函数

·QString::simplified()函数

五、查找是否包含字符串

·indexOf()

·startWith()/endsWith()函数

·left(n)/right(n)函数

六、常见问题

·如何在字符串换行排列里面加双引号?

·Linux下qDebug()解决输出中文乱码的问题

方式一、解决单个乱码问题

 方式二、解决整个工程代码中文乱码,在main函数里面加上这几句

其他

 ·数字转换为字符串

·chop(int n)函数,从字符串末尾删除n个字符

·remove(i,n)删除字符串中的


一、QString转char*

方式一:

    QString sData;
    char *buffer = sData.toStdString().c_str();

方式二:QString先转成QByteArry,再由QByteArry转char*

		QString str;
	    //方式1 
	    str.toUtf8().data();//编码为UTF8编码
	    str.toLatin1().data();//编码为Latin-1
        
        5/10补充:以上最好分成两步进行,不然有时候会报错,示例:
        QByteArray arry=str.toLocal8Bit();
        char *ch=arry.data();

	    //方式2    
	    QByteArray ba2; 
	    ba2.append(str); 
	    char *buffer = ba2.data(); 	  

补充:

char*转QString的方法:

    const char *c1 = "Hello World 1!";
    QString s1(c1);
    qDebug() << c1 << s1;

二、合并字符串

    QString str1 = "Welcome";
    QString str2 = " Hello,";

    //方式1 直接相加 +
    str1 = str1 + " to you";//str1="Welcome to you"
    str2.sprintf("%s %s","Welcome "," to you! ");//str2 = "Welcome to you!"

    //方式2 加到末尾 append
    str1 += " World! ";//str2="Welcome to you World!"
    str2.append("fff");//效果同上

    //方式3 自由组合 arg 
    QString str;
    str = QString("%1 was %2.").arg("he").arg("boy");//str =  "he was boy";

三、分割字符串

·split()函数

    QString str = "a,,b,c";
    QStringList list1 = str.split(",");
    // list1: [ "a", "", "b", "c" ]
    QStringList list2 = str.split(",", QString::SkipEmptyParts);
    // list2: [ "a", "b", "c" ]

·mid(pos,n)函数

返回在给定位置(第一个参数)开始且达到给定长度(第二个参数)的字串

    QString x = "Nine pineapples";
	QString y = x.mid(5, 4);            // y == "pine"
	QString z = x.mid(5);               // z == "pineapples"

·QString::section

这个函数把字符串看成是几个块,这些块由 sep 分隔,start 和 end 指定块号,end 默认为 –1 ,返回的是[ start, end ]内的块组成的字符串,如果 start 和 end 都是负数,那么将从字符串的后面往前面数,返回 [ -end, –start ]内的块组成的字符串。SectionFlags是一些标记,如SectionSkipEmpty表示如果两个分隔符之间是空串,那么就会跳过。

 QString QString::section ( QChar sep, 
             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼2333号程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值