C++语言提供了两种字符串的实现:C风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString,QString不用担心内存分配以及关于'\0'结尾的这些注意事项

  另外,与C风格的字符串不同,QString中间是可以包含'\0'符号的,而length()函数则会返回整个字符串的长度,而不仅仅是从开始到'\0'的长度。同Java的String类类似,QString也重载的+和+=运算符。

  这两个运算符可以把两个字符串连接到一起,QString可以自动的对占用内存空间进行扩充,这种连接操作是很迅速的

  示例:

  QString str = "User: ";
str += userName + "\n";

  QString的append()函数则提供了类似的操作,例如:

 str = "User: ";
str.append(userName);
str.append("\n");

  使用static的函数number()可以把数字转换成字符串。例如:

QString str = QString::number(54.3);

  你也可以使用非static函数setNum()来实现相同的目的:

QString str; str.setNum(54.3);

   而一系列的to函数则可以将字符串转换成其他基本类型,例如toInt(), toDouble(), toLong()等。这些函数都接受一个bool指针作为参数,函数结束之后将根据是否转换成功设置为true或者false:

 bool ok; double d = str.toDouble(&ok);
if(ok) { // do something... }
else { // do something... }

  对于QString,Qt提供了很多操作函数,例如,使用mid()函数截取子串:

 QString x = "Nine pineapples";
QString y = x.mid(, );
// y == "pine" QString z = x.mid(5); /
/ z == "pineapples"

  mid()函数接受两个参数,第一个是起始位置,第二个是取串的长度。如果省略第二个参数,则会从起始位置截取到末尾。正如上面的例子显示的那样。

  函数left()和rigt()类似,都接受一个int类型的参数n,都是对字符串进行截取。不同之处在于,left()函数从左侧截取n个字符,而right()从右侧开始截取。下面是left()的例子:

 QString x = "Pineapple";
QString y = x.left();
// y == "Pine"

  函数startsWith()和endsWith()可以检测字符串是不是以某个特定的串开始或结尾,例如:

 if (url.startsWith("http:") && url.endsWith(".png")) { }

  这段代码等价于

  if (url.left() == "http:" && url.right() == ".png") { }

  只不过前者要比后者更加清楚简洁,并且性能也更快.

  QString还提供了replace()函数供实现字符串的替换功能;trimmed()函数去除字符串两侧的空白字符(注意,空白字符包括空格、Tab以及换行符,而不仅仅是空格);toLower()和toUpper()函数会将字符串转换成小写大写字符串;

  remove()和insert()函数提供了删除和插入字符串的能力;simplified()函数可以将串中的所有连续的空白字符替换成一个,并且把两端的空白字符去除,例如" \t ”会返回一个空格" "。

  将const char *类型的C风格字符串转换成QString也是很常见的需求,简单来说,QString的+=即可完成这个功能:  

str += " (1870)";

  这里,我们将const char * 类型的字符串" (1870)"转换成为QString类型。  

  判断字符串是否为空

  bool QString::isEmpty () const 

如:
 QString().isEmpty();            // returns true
QString("").isEmpty(); // returns true
QString("x").isEmpty(); // returns false
QString("abc").isEmpty(); // returns false

判断字符串是否存在

  bool QString::isNull () const 

  如:
 QString().isNull();             // returns true
QString("").isNull(); // returns false
QString("abc").isNull(); // returns false

  使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。

QString::fill ( QChar ch, int size = -1 )

  如:

     QString str = "Berlin";
str.fill('z');
// str == "zzzzzz" str.fill('A', 2);
// str == "AA"

  从字符串里查找相同的某个字符串str。

int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

  如:

QString x = "sticky question";
QString y = "sti";
x.indexOf(y); // returns 0
x.indexOf(y, 1); // returns 10
x.indexOf(y, 10); // returns 10
x.indexOf(y, 11); // returns -1

  指定位置插入字符串

QString & QString::insert ( int position, const QString & str )

  如:

     QString str = "Meal";
str.insert(1, QString("ontr"));
// str == "Montreal"

  删除字符串中间某个字符。

QString & QString::remove ( int position, int n )

  如:

     QString s = "Montreal";
s.remove(1, 4);
// s == "Meal"

  替换字符串中的某些字符。

QString & QString::replace ( int position, int n, const QString & after )

  如:

     QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y);
// x == "Say no!"

QString 的用法的更多相关文章

  1. Qt 字符串QString arg()用法总结

    1.QString::arg()//用字符串变量参数依次替代字符串中最小数值 QString i = "iTest";           // current file's nu ...

  2. QString:常用成员函数总结

    QString是Qt中使用频率最高的几种数据类型之一,主要在于其提供了大量功能强大的成员函数,这里重点介绍一些常用的成员函数: 一.字符串处理相关 1.1 split() (拆分字符串) split( ...

  3. 《QT Creator快速入门》

    ui中的类,这样使用无法通过调试: Ui::Dialog ui(&w); w.show(); 而需要改成: Ui::Dialog ui; ui.setupUi(&w); w.show( ...

  4. Qt学习之路MainWindow学习过程中的知识点

    一.Qt的GUI程序有一个常用的顶层窗口,叫做MainWindow MainWindow继承自QMainWindow.QMainWindow窗口分成几个主要的区域:   二.QAction类 QAct ...

  5. Qt_颜色选择对话框(QColorDialog)

    转自豆子空间 使用QColorDialog也很简单,Qt提供了getColor()函数,类似于QFileDialog的getOpenFileName(),可以直接获得选择的颜色. include &l ...

  6. QString::​arg的用法

    1.用法示例1 String str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").arg("1"," ...

  7. QString的不常见用法

    QString str("Hello"); QString str = "Hello"; static const QChar data[4] = { 0x00 ...

  8. [转载]QString 乱谈(3)-Qt5与中文

    原文地址http://blog.csdn.net/dbzhang800/article/details/7542672?reload 两个月前,简单写过QTextCodec中的setCodecForT ...

  9. QCopChannel的用法

    QT提供了很多的进程间通讯的方法,例如共享内存,QProcess等等.但有一种方法是嵌入式端所独有的,那就是Qt Communications Protocol(QCOP)QT通讯协议,这种方法只能用 ...

随机推荐

  1. 设置电脑中的某个程序不弹出UAC用户控制提示的方法

    有用户发现在电脑开机后总是会弹出UAC用户账户控制窗口,这是因为电脑中的某个程序设置了开机启动,这样就会在开机后启动该程序时出现UAC提示.如果想要省略该提示,可以在电脑中设置该程序不弹出UAC用户控 ...

  2. _event_stop

    EventId 事件ID TeamId 事件玩家分组,攻守(防守为1,进攻为2),自定义阵营(_faction表自定义阵营ID),公会(公会guid) StopType 结束事件需要满足的条件,枚举类 ...

  3. [Python]IO密集型任务 VS 计算密集型任务

    所谓IO密集型任务,是指磁盘IO.网络IO占主要的任务,计算量很小.比如请求网页.读写文件等.当然我们在Python中可以利用sleep达到IO密集型任务的目的. 所谓计算密集型任务,是指CPU计算占 ...

  4. go 单进程并发

    demo1 // This sample program demonstrates how to create goroutines and // how the scheduler behaves. ...

  5. mysql基本知识总结

    第一天 create database act_web character set utf8; : 创建数据库并设立编码(命令中是不允许使用“-”的) '; :创建用户并设立密码 grant all ...

  6. 删除GitHub或者GitLab 上的文件夹,git rm -r --ceched 文件夹名 ,提交commit,git push

    方法一 这里以删除 .setting 文件夹为案例 git rm -r --cached .setting #--cached不会把本地的.setting删除 git commit -m 'delet ...

  7. Unity---资源管理中不同资源的路径获取方式

    1.首先需要先了解两个知识点: Unity内置的文件路径获取方式.windows的Directory.GetFiles文件获取方式:   1>Unity内置的文件路径获取方式,一下是官方解释:h ...

  8. 第 8 章 容器网络 - 059 - 安装配置 flannel

    安装配置 flannel 1) build flannel flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build. 不过用于做 build ...

  9. 虚拟机vmnet0、vmnet1和vmnet8的区别

    vmnet0,实际上就是一个虚拟的网桥 vmnet0,实际上就是一个虚拟的网桥,这个网桥有很若干个端口,一个端口用于连接你的Host,一个端口用于连接你的虚拟机,他们的位置是对等的,谁也不是谁的网关. ...

  10. 关于怎么在CSDN中修改代码行中字体的颜色

    先吐槽一下自己的心路历程吧,自己现在也是在CSDN中发表了自己好几篇的原创博文,但每一篇博文自己总感觉怪怪的,就是说不出自己哪里有毛病呢,知道今天恍然大悟,原来自己的代码行真心丑的要死,没有呈现出在编 ...