Qt5模板库、工具类及控件
发布于:2017-11-10 15:59
第2章 -- Qt5模板库、工具类及控件 --- 2017.11.9
简单介绍Qt字符串类QString、Qt容器类、QVariant类及Qt常用的算法和基本正则表达式
2.1字符串类
标准C++提供了两种字符串:一种是C语言风格的以“ ”字符结尾的字符数组;另一种是字符串类String,而Qt字符串类QString功能更强大。
QString类保存16位Unicode值,提供了丰富的操作、查询和转换等函数。该类还进行了使用隐式共享(implicit sharing)、高效的内存分配策略等方面的优化。
2.1.1操作字符串
字符串有如下几个操作符
(1)QString提供了一个二元的“+”操作符用于组合两个字符串,并提供了一个“+=”操作符用于将一个字符串追加到另一个字符串的末尾,例如:
QString str1 = "Welcome";
str1=str1+"to you!"; //str1="Welcome to you!"
QString str2 = "Hello,";
str2+="World"; //str2="Hello,World!"
其中,QString str1 = "Welcome"传递给QString一个const char*类型的ASCII字符串“Welcome”,它被解释为一个典型的“ ”结尾的C类型字符串。这将会导致调用QString构造函数,来初始化一个QString字符串。其构造函数原型为:
QT_ASCII_CAST_WARN_CONSTRUCTOR QString::QString(const char* str)
被传递的const char*类型的指针又将被函数QString::fromAscii()转换为Unicode编码。默认情况下,函数QString::fromAscii()会江超过128的字符作为Latin-1进行处理(可以通过调用QTextCode::setCodeForCString()),函数改变QString::fromAscii()函数的处理方式)
此外,在编译应用程序时,也可以通过定义QT_CAST_FROM_ASCII宏变量屏蔽该构造函数。如果程序员要求显示给用户的字符串都必须经过QObject::tr()函数的处理,那么屏蔽QString的这个构造函数是非常有用的。
(2)QString::append()函数具有与“+=”操作符同样的功能,实现在一个字符串的末尾追加另一个字符串,
例如:
QString str1 = "Welcome";
QString str2 = "to";
str1.append(str2); //str1="Welcome to"
str1.append("you!"); //str1="Welcome to you!"
(3)组合字符串的另一个函数是QString::sprintf(),此函数支持的格式定义符和C++库中的函数sprintf()定义一样。 例如:
QString str;
str.sprintf("%s"," Welcome "); //str="Welcome"
str.sprintf("%s"," to you! "); //str="to you!"
str.sprintf("%s %s","Welcome","to you!"); //str="Welcome to you!"
(4)Qt还提供了另一种方便的字符串组合方式,使用QString::arg()函数,此函数的重载可以处理很多的数据类型,此外,一些重载具有额外的参数对字段的宽度、数字基数或者浮点数精度进行控制。通常,相对于函数QString::sprintf(),函数QString::arg()是一个比较好的解决方案,因为它类型安全,完全支持Unicode,并且允许改变"%/n"参数的顺序,例如:
QString str;
str=QString("%1 was born in %2.").arg("John").arg(1982);
//str="John was born in 1982."
其中,"%1"被替换为"John","%2"被替换为"1982"
(5)QString也提供了一些其他组合字符串的方法,包括以下几种:
1>insert()函数: 在原字符串特定的位置插入另一个字符串。
2>prepend()函数:在原字符串的开头插入另一个字符串。
3>replace()函数:用指定的字符串代替原字符串中的某些字符。
(6)很多时候,去掉一个字符串两端的空白(空白字符包括回车字符" "、换行字符" "、制表符" "和空格符“”等)非常有用,如获取用户输入的账号时。
1>QString::trimmed()函数:移除字符串两端的空白字符
2>QString::simplified()函数:移除字符串两端的空白字符,使用单个空格字符“”代替字符中出现的空白字符,例如:
QString str = "Welcome to you! ";
str=str.trimmed(); //str="Welcome to you! "
在上述代码中,如果使用str=str.simplified(),则str的结果是"Welcome to you!"
- - - - - - - - 害你加班的bug,就是我写的! - - - - - - - - -
0
今日新帖
0
昨日新帖
35
帖子总数
《我的那些事儿》Episode 1——舒振新
达人专区 2016-07-18 11:42
一大波免费课求包养中 ——未来的平面设计狮,上么?
达人专区 2015-11-23 18:43
校招快报 | 10天5院校,就是这么帅!
达人专区 2015-12-02 18:44
这是一个装8人的社红之路
达人专区 2016-03-03 15:00
业精于勤 || 只要肯努力奋斗,就没有不成功的!
达人专区 2016-03-08 19:18
邢帅你这个大骗子!这几年都耗在这里啦!
达人专区 2016-03-13 17:29
回复:Qt5模板库、工具类及控件