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

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直接支持字符串的大小比较

扫描二维码关注公众号,回复: 2596169 查看本文章

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

4、QString直接支持std::stringstd::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替换为&

#include "text.h"
#include <QtWidgets/QApplication>
#include <qdebug.h>

void Sample_1()
{
	QString s = "add";

	s.append(" ");  //字符串前添加内容
	s.append("Qt");
	s.prepend(" ");  //字符串后加内容
	s.prepend("C++");

	qDebug() << s;

	s.replace("add", "$"); //替换
	qDebug() << s;
}

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	text w;
	Sample_1();
	w.show();
	return a.exec();
}

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;

#include "text.h"
#include <QtWidgets/QApplication>
#include <qdebug.h>

void Sample_1()
{
	QString s = "add";

	s.append(" ");  //字符串前添加内容
	s.append("Qt");
	s.prepend(" ");  //字符串后加内容
	s.prepend("C++");

	qDebug() << s;

	s.replace("add", "$"); //替换
	qDebug() << s;
}

void Sample_2()
{
	QString a = " ";
	int index = 0;

	a.sprintf("%d. I'm %s, thank you!", 1, "Datang"); //"1. I'm Datang, thank you!"
	qDebug() << a;
	index = a.indexOf(",");

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

	index = a.indexOf(".");//定位到“m”的下标
	a = a.mid(index + 1, a.length()); //提取从m的下一位开始到最后的字符串“ Dawei”
	a = a.trimmed(); //去掉字符串中的空格
	qDebug() << a;
}

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	text w;
	qDebug() << "Sample_1:";
	Sample_1();
	qDebug() << endl;

	qDebug() << "Sample_2:";
	Sample_2();
	qDebug() << endl;

	w.show();
	return a.exec();
}

猜你喜欢

转载自blog.csdn.net/qq_37764129/article/details/81474545
今日推荐