QT学习笔记(六)——Qt中的字符串类

秒速五厘米 2022-05-17 05:08 355阅读 0赞

在C++中可以通过类完成字符串类型的定义

一、标准库STL

  • STL的具体实现依赖于编译器生产厂商
  • STL的“标准”只是其接口是标准的

——相同的全局函数

——相同的算法类和数据结构类

——相同的类成员函数

  • 不同厂商的编译器所带的STL存在差异

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

二、Qt中的字符串类QString

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

2.1 Qt中的字符串类

——采用Unicode编码:即Qt中的类可以翻译成不同国家的语言,还可以处理不同类型的字符串

——使用隐式共享技术来节省内存和不必要的数据拷贝:结合深拷贝和浅拷贝的优点于一身的技术

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

2.2 Qt中QString的优点

1、QString直接支持字符串和数字的相互转换

2、QString直接支持字符串的大小比较

3、QString直接支持不同字符编码间的相互转换

4、QString直接支持std::string和std::wstring的相互转换,其他C++类库无法实现

5、QString直接支持正在表达式的应用

。。。

2.3 QString中的相关功能函数

1、在字符串前后加内容







QString s = “add”;

 

s.append(“ “);   //在字符串后面加空格 “add ”

s.append(“Qt”);   //在字符串后面加字符“add Qt”

 

s.prepend(“ “);  //在字符串前面加空格“ add Qt”

s.prepend(“C++”);   //在字符串前面加字符“C++ add Qt”

2、字符的替换







s.replace(“add”, “&”); //将add替换为&

  1. #include "text.h"
  2. #include <QtWidgets/QApplication>
  3. #include <qdebug.h>
  4. void Sample_1()
  5. {
  6. QString s = "add";
  7. s.append(" "); //字符串前添加内容
  8. s.append("Qt");
  9. s.prepend(" "); //字符串后加内容
  10. s.prepend("C++");
  11. qDebug() << s;
  12. s.replace("add", "$"); //替换
  13. qDebug() << s;
  14. }
  15. int main(int argc, char *argv[])
  16. {
  17. QApplication a(argc, argv);
  18. text w;
  19. Sample_1();
  20. w.show();
  21. return a.exec();
  22. }

3、找某字符的下标







QString s = “I’m Dawei, thank you!”;

int index = 0;

 

index = s.indexOf(“,”);//找该字符串中“,”的下标

s = s.mid(0, index); //取子串。从第一个字符开始一直到之前定位的那个下标结束的这段字符“I’m Dawei

 

4、字符串提取







s = s.mid(0, index); //取子串。从第一个字符开始一直到之前定位的那个下标结束的这段字符

qDebug() << s;

 

index = s.indexOf(“m”);//定位到“m”的下标

s = s.mid(index + 1, s.length()); //提取从m的下一位开始到最后的字符串“ Dawei

s = s.trimmed(); //去掉字符串中的空格

qDebug() << s;

70

  1. #include "text.h"
  2. #include <QtWidgets/QApplication>
  3. #include <qdebug.h>
  4. void Sample_1()
  5. {
  6. QString s = "add";
  7. s.append(" "); //字符串前添加内容
  8. s.append("Qt");
  9. s.prepend(" "); //字符串后加内容
  10. s.prepend("C++");
  11. qDebug() << s;
  12. s.replace("add", "$"); //替换
  13. qDebug() << s;
  14. }
  15. void Sample_2()
  16. {
  17. QString a = " ";
  18. int index = 0;
  19. a.sprintf("%d. I'm %s, thank you!", 1, "Datang"); //"1. I'm Datang, thank you!"
  20. qDebug() << a;
  21. index = a.indexOf(",");
  22. a = a.mid(0, index); //取子串。从第一个字符开始一直到之前定位的那个下标结束的这段字符
  23. qDebug() << a;
  24. index = a.indexOf(".");//定位到“m”的下标
  25. a = a.mid(index + 1, a.length()); //提取从m的下一位开始到最后的字符串“ Dawei”
  26. a = a.trimmed(); //去掉字符串中的空格
  27. qDebug() << a;
  28. }
  29. int main(int argc, char *argv[])
  30. {
  31. QApplication a(argc, argv);
  32. text w;
  33. qDebug() << "Sample_1:";
  34. Sample_1();
  35. qDebug() << endl;
  36. qDebug() << "Sample_2:";
  37. Sample_2();
  38. qDebug() << endl;
  39. w.show();
  40. return a.exec();
  41. }

发表评论

表情:
评论列表 (有 0 条评论,355人围观)

还没有评论,来说两句吧...

相关阅读

    相关 QT学习之路QTtcp传输)

      这几天一直在做银行的管理系统,包括职工的登陆注册以及客户的开户转账存取款等功能,这几天天天通宵也写的差不多了,还剩下最后一个功能,交易记录的管理,差不多明天应该就能结束了。

    相关 Qt学习笔记-Qt概念解析

    (1)信号和槽机制(Signal&Slot) Qt提供了信号和槽机制用于完成界面操作的响应,是完成两个任意Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽