原地址:http://blog.csdn.net/xgbing/article/details/7770854

QString是Unicode字符的集合,它是Qt API中使用的字符串类。

QString的成员是QChar,QChar是一个16位Unicode字符类。大多数编译器把它看作是一个unsigned short。

QString和C标准中的字符串不同,它不以'\0'结尾,相反,QString可以嵌入'\0'/字符。

(1)QString初始化。

  1. QString str("Hello");
  2. QString str = "Hello";
  3. static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
  4. QString str(data, 4);
  5. QString str;
  6. str.resize(4);
  7. str[0] = QChar('U');
  8. str[1] = QChar('n');
  9. str[2] = QChar(0x10e3);
  10. str[3] = QChar(0x03a3);
  11. QString str;
  12. str.sprintf("%s %.3f", "float", 3.1415926);
  13. //str结果是"float 3.14"
  14. QString str;
  15. str.setNum(10);  //str = "10"
  16. str.setNum(10, 16); //str = "a"
  17. str.setNum(10.12345); //str = "10.12345"
  18. QString i;           // current file's number
  19. QString total;       // number of files to process
  20. QString fileName;    // current file's name
  21. QString status = QString("Processing file %1 of %2: %3")
  22. .arg(i).arg(total).arg(fileName);

(2)字符串转换

  1. long    toLong ( bool * ok = 0, int base = 10 ) const
  2. qlonglong   toLongLong ( bool * ok = 0, int base = 10 ) const
  3. short   toShort ( bool * ok = 0, int base = 10 ) const
  4. double  toDouble ( bool * ok = 0 ) const
  5. float   toFloat ( bool * ok = 0 ) const
  6. uint    toUInt ( bool * ok = 0, int base = 10 ) const
  7. ulong   toULong ( bool * ok = 0, int base = 10 ) const
  8. qulonglong  toULongLong ( bool * ok = 0, int base = 10 ) const
  9. ushort  toUShort ( bool * ok = 0, int base = 10 ) const

参数ok结果说明转换是否成功。
示例:

  1. QString str;
  2. bool ok;
  3. double d = str.toDouble(&ok);
  4. if(ok)
  5. {
  6. cout << str << endl;
  7. } else
  8. {
  9. cout << "error." << endl;
  10. }

(3)字符串比较

  1. int compare ( const QString & other ) const
  2. int compare ( const QString & other, Qt::CaseSensitivity cs ) const
  3. int compare ( const QLatin1String & other, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
  4. int compare ( const QStringRef & ref, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
  1. QString().isNull();               // returns true
  2. QString().isEmpty();              // returns true
  3. QString("").isNull();             // returns false
  4. QString("").isEmpty();            // returns true
  5. QString("abc").isNull();          // returns false
  6. QString("abc").isEmpty();         // returns false

(4)字符串处理

QStringleft ( int n ) const  //取左边的n个字符。
QStringright ( int n ) const //取右边的n个字符。

replace()函数提供方法替换字符串。

remove()函数从字符串中移除字符。

split()函数拆分字符串。

mid()取子串。

Qt入门-字符串类QString的更多相关文章

  1. 字符串类QString

    采用Unicode编码,所以一个QChar占用两个字节使用隐式共享技术来节省内存和减少不必要的数据拷贝跨平台使用,不用考虑字符串的平台兼容性QString直接支持字符串和数字之间的相互转换QStrin ...

  2. 第11课 Qt中的字符串类

    1. 历史遗留问题和解决方案 (1)历史遗留问题 ①C语言不支持真正意义上的字符串 ②C语言用字符数组和一组函数实现字符串操作 ③C语言不支持自定义类型,因此无法获得字符串类型 (2)解决方案 ①从C ...

  3. Qt常用类——Qstring

    Qstring有一些方面跟C/C++中的string的使用,例如把一个字符串追加到另一个字符串中,也是用“+”.也有append函数等. 下面是是Qstring的一些常用的具体函数示例: Qt的QSt ...

  4. Qt比较字符串Qstring是否相等

    Qt比较字符串Qstring是否相等 QString str = "相等"; if(str ==QString::fromLocal8Bit("球形")) { ...

  5. 为什么不用C++写游戏(聪明的程序员不用C++折磨自己)(这些工作,QT都替开发者解决了,C++没有根类导致太多的问题,也没有字符串类)

    当今世界上绝大多数游戏都是C++写的,为什么要说不呢? 要做什么?写游戏. 写游戏首先要考虑些什么?做什么样的游戏,图形.音效.游戏逻辑如何实现. 用C++要先考虑什么?定义跨平台数据类型抽象,实现常 ...

  6. Qt入门(12)——Qt国际化

    应用的国际化就是使应用成为能被非本国的人使用的过程.有的情况下,国际化很简单,例如,使一个US应用可被Australian或者British用户理解,工作可能少于几个拼写修正.但是使一个US应用可以被 ...

  7. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

  8. QT json字符串生成和解析

    1         QT json字符串生成和解析 1.1  QT Json解析流程 (1)  字符串转化为QJsonDocument QJsonParseError json_error; QJso ...

  9. Qt 格式化字符串

    Qt字符串格式化性能比较 Qt字符串格式方法有三种, QString::arg(), QString::sprinft()和QStringList::join().今天我做了个简单的性能测试, 希望对 ...

随机推荐

  1. Android Input设备debug技巧

    一.驱动层 检查是否有点上报 adb shell getevent -l /dev/input/eventX 检查input设备支持的属性值 adb shell getevent -i /dev/in ...

  2. 小程序员在android移动应用上的赚钱经历

    先说说我自己吧,二线城市(以外包为主)的小程序员,工作多年了,月收入5-6K.主要从事asp.net web网站开发,java,c++,php,ruby都懂一些,属于那种对问题不求甚解型,爱好电脑游戏 ...

  3. UIBezierPath详解

    使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线 ...

  4. E - Phone List(字典序,string类型使用)

    Description Given a list of phone numbers, determine if it is consistent in the sense that no number ...

  5. BZOJ 3408: [Usaco2009 Oct]Heat Wave 热浪( 最短路 )

    普通的最短路...dijkstra水过.. ------------------------------------------------------------------------------ ...

  6. PHP学习笔记4-类/命名空间/成员方法/类方法

    命名空间 namespace   类 class创建文件Hello.php,namespace是jikexueyuan: <?php /** * Created by PhpStorm. * U ...

  7. codeigniter ,看完这些,就可以用它做项目了

    一.MVC 1,入口文件 唯一一个让浏览器直接请求的脚本文件 2,控制器 controller 负责协调模型和视图 3,模型 model 只负责提供数据,保存数据 4,视图 只负责显示,以及搜集用户的 ...

  8. 高质量程序设计指南C/C++语言——C++/C程序设计入门

    1.在C++/C中,全局变量(extern或static)存放在程序的静态数据区中,在程序进入main()之前创建,在main()结束之后销毁,因此在我们的代码中根本没有机会初始化它们,于是语言及其实 ...

  9. 【转】Visual Stdio VS 错误 error : 0xC00000FD: Stack overflow. 更改堆栈空间解决栈溢出问题

    原文见:http://www.cnblogs.com/xiangwengao/archive/2012/03/16/2399888.html 问题 给一个程序添加小功能,在debug下能正常运行,在r ...

  10. 深入JDK源码之Arrays类中的排序查找算法(转)

    原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...