在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替换为& |
#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();
}