11_Qt中的字符串类

声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

1. 标准库STL

  • STL是意义上需要与C++一同发布得标准库
  • STL是一套以模板技术完成得C++类库
  • STL中包含了常用的算法数据结构
  • STL中包含了字符串类
  • STL得具体实现依赖于编译器生产厂商
  • STL得标准只是其接口是标准的
    相同的全局函数
    相同的算法类和数据结构类
    相同的类成员函数
  • 不同厂商的编译器所带得STL存在差异

note:依赖于STL开发的C++程序在不同平台上的行为可能出现差异!!!

2. 开发前的选择

  • 项目是否需要使用现有库的支持:STL?Qt?MFC?私有库?
  • 项目是否需要在不同平台间移植:Linux?Windows?Android?
  • 项目是否需要图形用户界面:GUI应用程序?命令行应用程序?后台服务程序?

3. Qt中的字符串类

  • 采用Unicode编码技术
  • 使用隐式共享技术来节省内存和不必要的数据拷贝
  • 跨平台使用,不必考虑字符串的平台兼容性

Unicode编码:支持中、日、韩、英文等
ASCII编码:只支持英语和其它西欧语言

4. QString

  • QString 直接支持字符串和数字的相互转换
  • QString 直接支持字符串的大小比较
  • QString 直接支持不同字符编码间的相互转换
  • QString 直接支持std::stringstr::wstring的相互转换
  • QString 直接支持正则表达式的应用

QString 在Qt库中几乎是无所不在的,所有的Qt图形用户组件都依赖于QString

编程说明:为计算器实例添加消息响应

oid QCalculatorUI::onButtonClicked()       // 实现消息处理函数
{
    QPushButton* btn = (QPushButton*)sender();  // 获取发送方对象的指针
    QString clickText = btn->text();
    if( clickText == "<-")
    {
        QString text = m_edit->text();

        if( text.length() > 0 )
        {
            text.remove(text.length()-1, 1);

            m_edit->setText(text);
        }

    }
    else if( clickText == "C" )
    {
        m_edit->setText("");
    }
    else if( clickText == "=")
    {

    }
    else
    {
        m_edit->setText(m_edit->text() + clickText);
    }
}

5. 小结

  • 应用开发中大多数情况都是在进行字符串处理
  • Qt比STL更适合于跨平台开发的场景
  • Qt中的QString比STL中string更强大易用
  • Qt图形用户组件都依赖于QString
  • 项目开发时需要综合各种选择需要使用的库
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。