QT中字符串的转化与拼接

来源:互联网 发布:驾校约车用什么软件 编辑:程序博客网 时间:2024/05/18 09:45

 先说几个相关的类:

一 、QChar

       QChar 类是 Qt 中用于表示一个字符的类,实现在 QtCore 共享库中。QChar类内部用2个字节的Unicode编码来表示一个字符。

       

 构造

       QChar 类提供了多个不同原型的构造函数以方便使用,如:

QChar();                   // 构造一个空字符,即'\0'QChar(char ch);         // 由字符数据ch构造QChar(uchar ch);        // 由无符号字符数据ch构造QChar(ushort code);   // 由无符号短整形数据code构造,code是Unicode编码QChar(short code);     //由 短整形数据code构造,code是Unicode编码QChar(uint code);      // 由无符号整型数据code构造,code是Unicode编码QChar(int code);       // 由整型数据code构造,code是Unicode编码

实际使用时很少直接构造 QChar类的对象,而是把这些构造函数当做类型转换来用,让编译器自动构造所需的QChar类对象。也就是说,在所有需要QChar类作为参数的地方都可以安全地使用各种整数类型。

       

判断

      QChar类提供了很多成员函数,可以对字符的类型进行判断,如: 

bool isDigit() const;            // 判断是否是十进制数字('0' - '9')bool isLetter() const;          // 判断是否是字母bool isNumber() const;        // 判断是否是数字,包括正负号、小数点等bool isLetterOrNumber();    // 判断是否是字母或数字bool isLower() const;           // 判断是否是小写字母bool isUpper() const;           // 判断是否是大写字母bool isNull() const;              // 判断是否是空子符'\0'bool isPrint() const;            // 判断是否是可打印字符bool isSpace() const;         // 判断是否是分隔符,包括空格
转换:
char toAscii() const;           // 得到字符的ASCII码QChar toLower() const;    // 转换成小写字母QChar toUpper() const;    // 转换成大写字母ushort unicode() const;    // 得到Unicode编码
注意这几个函数都不会改变对象自身,转换的结果通过返回值反映出来。

     

 比较:

bool operator != (QChar c1, QChar c2);    // 判断 c1 是否不等于 c2  

bool operator (QChar c1, QChar c2);     // 判断  c1 是否小于 c2  

bool operator <= (QChar c1, QChar c2);   // 判断 c1 是否小于等于 c2  

bool operator == (QChar c1, QChar c2);   // 判断 c1  是否等于c2  

bool operator (QChar c1, QChar c2);    // 判断 c1 是否大于 c2  

bool operator >= (QChar c1, QChar c2);   // 判断  c1  是否大于等于 c2  

 

 

二、QString类:

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

      1)字符串采用Unicode 内部编码,可以表示世界上大多数语言的文字。

     2)字符串的存储有引用计数,当一个 QString 对象被复制为另一个 QString对象时,它们实际上指向相同的存储空间,仅仅是增加一个引用计数。

      3)采用“按需复制” 的技术,当指向相同存储空间的多个 QString 对象中的一个要被修改时,将真正复制一个新的字符串并进行修改。


构造:

      QString 类提供了很多不同原型的构造函数以方便使用。如:

Qstring();                                        // 构造空字符串QString(QChar ch);                           // 由 QChar 对象 ch构造QString(const QChar *pch, int size);    // 由 QChar 数组pch构造,size 是数组大小QString(const QString &obj);              // 拷贝构造函数QString(const char *str);                  //  由字符串 str 构造,str是一个普通字
 由于存在这些构造函数,凡是可以用 QString 类作为参数的地方,都可以安全地使用QChar 对象或普通的字符串。
 

判断 

      可以用下面的成员函数判断 QString 对象是否为空字符串:

 

      bool isEmpty() const;    // 判断是否为空字符串  
 转换:       
double toDouble(bool *ok = 0) const;                                  // 转换为高精度浮点数float toFloat(bool *ok = 0) cosnt;                                          // 转换为浮点数int toInt(bool *ok, int base = 10) const;                                 // 转换为整型数long toLong(bool *ok, int base = 10) cosnt;                            // 转换为长整型short toShort(bool *ok, int base = 10) const;                          // 转换为短整型uint toUInt(bool *ok = 0; int base = 10) const                         // 转换为无符号整型数ulong toLong(bool *ok = 0, int base = 10) const;                   // 转换为无符号长整型数 ushort toUShort(bool *ok = 0, int base = 10) const;                 // 转换为无符号短整型数
 这些函数能够解析 QString 对象的内容,将其转换为相应的数值。其中 ok 参数指向一个bool 型变量, 这个参数用于输出转换是否成功的信息。base参数则是转换为整数类型时的基。这些函数都不会改变 QString对象自身。 

注意: 当字符串以 0x开头时,转换的基自动转换为16, 当字符串以0开头时,转换的基自动为8。

 

还有一些将其他类型转换成QString的方法:

使用static的函数number()可以把数字转换成字符串。例如:
    QString str= QString::number(54.3);
你也可以使用非static函数setNum()来实现相同的目的:
    QString str; 
   str.setNum(54.3); 

 

字符串的拼接:

一、QString可以自动的对占用内存空间进行扩充,这种连接操作是恨迅速的。下面是这两个操作符的使用:
    QString str= "User: "  ;  
    str +=userName + "\n"  ;
二、QString的append()函数则提供了类似的操作,例如:
    str = "User:"  ;  
   str.append(userName);  
   str.append("\n"  );
三、C语言中有printf()函数作为格式化输出,QString则提供了一个sprintf()函数实现了相同的功能:

   str.sprintf("%s %.1f%%"  , "perfectcompetition"  , 100.0);
这句代码将输出:perfect competition100.0%,同C语言的printf()一样。不过前面我们也见到了Qt提供的另一种四、格式化字符串输出的函数arg():
    str =QString("%1 %2 (%3s-%4s)" 
         .arg("permissive" ).arg("society"  ).arg(1950).arg(1970);
这段代码中,%1, %2, %3,%4作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成permissive,%2将被替换成society,%3将被替换成1950,%4将被替换曾1970,最后,这句代码输出为:permissive society (1950s-1970s).arg()函数比起sprintf()来是类型安全的,同时它也接受多种的数据类型作为参数,因此建议使用arg()函数而不是传统的sprintf()。


 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 冬天穿旗袍腿冷怎么办 云短信发验证码怎么办 30人生迷茫时该怎么办 蒸饺子没有屉布怎么办 酵素浴生蛆虫该怎么办 做销售年纪大了怎么办 我的手表进水了怎么办 美度手表进水了怎么办 买了瓶过期香水怎么办 宝宝吃了润唇膏怎么办 新生3天宝宝打嗝怎么办 咖啡喝多了恶心怎么办 喝咖啡恶心想吐怎么办 咖啡喝多了头晕怎么办 喝咖啡反胃想吐怎么办 咖啡喝多了胃疼怎么办 喝了咖啡想吐怎么办 微商别人觉得贵怎么办 id被别人锁定了怎么办 2017闯红灯扣6分怎么办 乐天玛特超市卡怎么办 乐天玛特的卡怎么办 乐天玛特倒闭 卡怎么办 公租房五年到期怎么办 超市的水杯坏了怎么办 玩天涯明月刀卡怎么办? 想开童装店没什么经验怎么办 孕后期鼻炎犯了怎么办 酷狗国外听不了怎么办 酷狗音乐换手机怎么办 有优势卵泡不排卵怎么办 卵泡30mm不破怎么办 成熟的卵泡不破怎么办 卵泡大了不破怎么办 卵泡突然不长了怎么办 想怀孕卵泡不长怎么办 吉吉影音下载慢怎么办 辞职后社保断了怎么办 2岁泡泡糖咽下去怎么办 我在拼多多开团怎么办 养了一条鱼死了怎么办