zoukankan      html  css  js  c++  java
  • 011_Qt 中的字符串类

    一、 历史遗留问题

    1. C 语言不支持真正意义上的字符串
    2. C 语言用字符数组和一组函数实现字符串操作
    3. C 语言不支持指定类型,因此无法获得字符串类

    二、 解决方案

    1. 从 C 到 C++ 的进化过程引入了自定义类型
    2. 在 C++ 中可以通过类完成字符串类型的定义

    问1:C++ 中的原生类型系统是否包含字符串类型?
    原生类型系统:这门语言自诞生时候起就拥有的数据类型的集合
    答:没有,C++的原生类型系统可以说是几乎和 C 语言相同。所以说C++ 中的字符串类型必须得通过额外的自定义来得到。

    问2:不同的人也就会定义不同的字符串类型,那么有没有标准的字符串类型可以使用呢?
    答:标准库STL

    三、 标准库 STL(Standard Template Library)

    1. STL 是意义上需要与 C++ 一同发布的标准库
    2. STL 是一套一模板技术完成的 C++ 类库
    3. STL 中包含了常用的算法和数据结构
    4. STL 中包含了字符串类

    问:既然 STL 里面已经定义了字符串类了,那为什 Qt 里面还要定义字符串类?
    答:
    1. STL 的具体实现依赖于编译器生产厂商
    2. STL 的"标准"只是其接口是标准的。也就是它有相同的全局函数;相同的算法类和数据结构类;相同的类成员函数。
    3. 但是不同厂商的编译器所带的 STL 是存在差异的。依赖于 STL 开发的 C++ 程序在不同平台上的行为可能出现差异!!!

    四、 开发前的选择

    1、 项目是否需要使用现有库的支持?

        1. STL : 如果项目是使用 C++ 开发的,并且只在一个平台上使用。因为只在一个平台上面编译运行,只在一个平台上发布产品。
        2. Qt : 如果需要跨平台,那么 STL 也许就不能使用了。
        3. MFC : 如果只在 Windows 上进行开发,MFC也是一个非常好的选择。
        4. 私有库: 当然很多公司明令禁止不能使用 STL,很多公司有自己开发出来的一套库,因为不想依赖于其他公司的产品。
    

    扩展知识区:C++ 没有专门所属的公司来开发、维护它,倒是有很多的开发 C++ 编译器的厂商,那么这些厂商都会对 C++ 这门语言做一些扩展,比如说:VC编译器和G++编译器,他们里面的C++的扩展就是不一样的,那既然C++语言都可以有所不同,STL有所不同那也就是非常正常的一件事情了。

    2、 项目是否需要在不同平台间移植?

    Android要去支持STL还有不少的工作要做,但是现在最新的Qt已经可以用来开发Android应用程序了

    3、 项目是否需要图形用户界面?

    项目在开发前,就要考虑这个项目是GUI应用程序,还是命令行应用程序,还是后台服务程序。STL 是不能开发图形用户界面的,因为STL不包含图形用户界面的类。

    五、 Qt 中的字符串类

    1. 采用 Unicode 编码

    1. 它直接采用了Unicode编码,也就是说Qt中的字符串不仅仅支持英文,还直接支持中文、日文、韩文等等。
    2. 而STL中的String类可能是因为诞生的比较早,所以是不支持Unicode编码的,它只支持ASCII编码。随着STL的发展,在STL里面就出现了WSting(W:Wide,宽字符)

    2. 使用隐式共享技术来节省内存和不必要的数据拷贝

    隐式共享技术:集合了深拷贝和浅拷贝的优点与一身的技术

    3. 跨平台使用,不必考虑字符串的平台兼容性

    六、 QSting VS string(STL)

    七、 QString 基本操作示例(11-1)

    Sample_1

    Sample_2

    Sample_3

    八、 Qt 中的 QString

    在开发应用程序的时候,我们绝大多数都是在和字符串类在打交道,QString 在 Qt库中几乎是无所不在的,所有的 Qt 图形用户组件都依赖与 QString

    九、 编程实验(为计算器实例添加消息响应)

    上节的消息处理函数

    sender函数解析:发送消息的对象指针,它是 QObject 类的成员函数。在消息处理函数中调用 sender 函数将得到当前被点击的那个按钮的指针,有了这个指针,就可以获得按钮上显示的提示性字符串。

    1. 修改消息处理函数(槽)--将点击的按钮信息显示在文本框上


    输出信息

    缺陷:在文本框上只能单纯的往后面添加字符,回退、撤销字符的功能都不能起到应用的作用效果

    2. 对特殊的字符对应特殊的处理


    输出信息

    缺陷:能够撤销和回退,但是文本框对齐应该改为右对齐

    改进地方:最后的等号运算还未实现。

    十、 小结

    • 应用开发中大多数的情况都在进行字符串处理(所以字符串类对于我们的应用开发是至关重要的)
    • Qt 比 STL 更适合于跨平台开发的场景(Qt 中的 QString 比 STL 中 string 类更加强大易用)
    • Qt 图形用户组件都依赖于 QString
    • 在项目开发时需要综合各种选择需要的库
  • 相关阅读:
    jQuery tips
    WCF4.0进阶系列—第十一章 编写代码控制配置和通信 (上)
    WCF4.0进阶系列—第九章 事务支持(上)
    WCF4.0进阶系列第二章 寄宿WCF服务
    WCF4.0进阶系列第五章 在因特网环境下保护WCF服务
    [JavaScript] onkeypress and onchange event
    [JavaScript]使用jQuery定制开发自己的UI
    WCF4.0进阶系列第四章 保护企业内部的WCF服务
    WCF4.0进阶系列第六章 维护服务协定和数据协定
    WCF4.0 进阶系列第一章 WCF简介
  • 原文地址:https://www.cnblogs.com/luosir520/p/13214817.html
Copyright © 2011-2022 走看看