QT QString详解

一些描述:

QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中。QString 类在实现上有以下特征。

  • 字符串采用 Unicode 内部编码,可以表示世界上大多数语言的文字; 字符串的存储有引用计数,当一个 QString 对象被复制为另一个
  • QString 对象时,它们实际上指向相同的存储空间,仅仅是增加一个引用计数; 采用 “按需复制” 的技术,当指向相同存储空间的多个
  • QString 对象中的一个要被修改时,将真正复制一个新的字符串并进行修改。
1.创建
QString str1 = "Welcome";

//下面这种写法错误!!!要初始化后,才能加!
QString str2 = "Welcome"+" OK";

//正确
QString str3="Welcome";
str3=str3+"Hello";
2.连接拼接
QString abc="sss";
abc="xxx"+abc+"123"+abc;
3.比较
    QString str="hello" ;
    if(str =="hello")
    {
        qDebug("xiangtong");
    }

结果为xiangtong

 //返回int类型值,等于0表示相同,不等于0不同
    //Qt::CaseInsensitive 这个类型,表示大小写不敏感  Qt::CaseSensitive 表示大小写敏感
    QString str="Hello" ;
    if(str.compare("hello",Qt::CaseInsensitive)==0)
    {
        qDebug("xiangtong");
    }

结果为xiangtong

4.是否为空字符串
QString str;
    if(str==NULL){
        qDebug("kong");
    }
    
    if(str==""){
        qDebug("kong");
    }

QString str1="";
    if(str1==""){
        qDebug("kong");
    }
    

三者结果都为kong

5.转换大小写
    QString str="Hello" ;
    str=str.toLower();
    qDebug(str.toLatin1()); //这里输出为: hello

    str=str.toUpper();
    qDebug(str.toLatin1()); //这里输出为: HELLO
6.获取长度
    QString str="Hello" ;
    int len=str.length();
    qDebug("%d",len); //这里输出结果为:5
7.去掉空格
    //trimmed只能去掉首尾的空格
    QString str=" He llo " ;
    str=str.trimmed();
    qDebug(str.toLatin1()); //输出结果:He llo


    //用这种方法,才能去掉全部空格
    QString str1=" He llo " ;
    str1=str1.remove(QRegExp("\\s"));
    qDebug(str1.toLatin1());//输出结果:Hello
8.获取子串
    //mid的第一个参数 position 是子字符串的起始位置
    //mid的第二个参数参数 n 是字符串的个数
    // 如果n 为 -1,则表示一直到原字符串的结尾。
    QString str="Hello" ;
    QString str1=str.mid(0,2);
    qDebug(str1.toLatin1());//输出结果为:He
9.查找字符串

    //默认比较,大小写敏感
    QString str="Hello" ;
    if(str.contains("hel")){
         qDebug("yes");
    }else{
         qDebug("no");
    }
    //输出结果为:no
  
    //大小写不敏感的比较
    QString str="Hello" ;
    if(str.contains("hel",Qt::CaseInsensitive)){
         qDebug("yes"); 
    }
    //输出结果为:yes    CaseInsensitive表示大小写不敏感
10.替换字符串
    QString str="Hello" ;

    str=str.replace("llo","xxx");
    qDebug(str.toLatin1()); //输出结果为:Hexxx
11.和char*之间的转换
    //char*转QString
    char charArry[] = "hello";
    char* ch = charArry;
    QString str = Qstring::fromUtf8(ch); 

    //QString转char*,先转为string,避免中文乱码
    QString filename="he中国人llo";
    std::string str = filename.toStdString();
    const char* ch = str.c_str();
    qDebug(ch);

    //QString转char*
    QString  str= "he中国人llo";
    char*  ch ;
    QByteArray ba = str.toUtf8();//这句避免中文乱码,这句和下面那句不能连着写
    ch=ba.data();
    qDebug(ch);
12.字符串和数值之间的转换
    QString str="20";
    
    int strInt=str.toInt();
    int num=100;
    
    QString  str= QString::number(num);

注意事项:

  • 中文做比较的时候
  • 中文做和char* 之间的转换的时候
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值