1 概述
- QString是Qt界面编程中最常用的类,它实现对字符串的存储,还有很多函数可以方便地实现字符串与很多其它数据类型的转化。
- QString存储字符串每一个字符是一个16位的QChar,QChar使用Unicode 4.0编码,因此QString可以处理中文字符,注意一个汉字是一个字符。
- QString类使用了隐式共享的技术(写时复制,只复制链接,如要修改则在修改时才复制实际的数据),从而减少内存的使用和无用的数据拷贝操作。
- 除了QString,Qt也提供了类QByteArray存储连续的字节数据或是传统的以’\0’结尾的8位字符串数据。不过QByteArray存储的是原始的二进制数据,我们还要对它进行译码。
2 QString的接口函数
1. 构造QString
QString::QString(const QString &other);
QString::QString(const char *str);
QString aaa = QString("I have aaa");
QString bbb = "I have bbb";
2. QString与QByteArray的转化
//QByteArray到QString
QString::QString(const QByteArray &ba);//直接用QByteArray初始化QString,内部调用fromUtf8
[static] QString QString::fromUtf8(const char *str, int size = -1);//静态函数,用字符串str的前size字节以UTF-8格式构造QString,默认为-1:strlen(str)
//QString到QByteArray
QByteArray QString::toUtf8() const;//将QString转化为QByteArray
QString ccc = "I have ccc";
QByteArray ddd = ccc.toUtf8();
QString fff = QString::fromUtf8((const char*)ddd);
3. QString与整数的转化
//字符串到整数
short QString::toShort(bool *ok = Q_NULLPTR, int base = 10) const;//转换成功时ok写入true,base指定字符串中的进制
int QString::toInt(bool *ok = Q_NULLPTR, int base = 10) const;
long QString::toLong(bool *ok = Q_NULLPTR, int base = 10) const;
qlonglong QString::toLongLong(bool *ok = Q_NULLPTR, int base = 10) const;
QString ggg = "125";
int hhh = ggg.toInt();//hhh = 125
//整数到字符串
QString &QString::setNum(int n, int base = 10);
[static] QString QString::number(int n, int base = 10);
QString hhh;
hhh = hhh.setNum(125);
QString iii = QString::number(125,16);
4. QString与浮点数的转化
//字符串到浮点数
float QString::toFloat(bool *ok = Q_NULLPTR) const;
double QString::toDouble(bool *ok = Q_NULLPTR) const;
QString jjj = "125.0";
float kkk = jjj.toFloat();
//浮点数到字符串
[static] QString QString::number(double n, char format = 'g', int precision = 6);
[static] QString QString::asprintf(const char *cformat, ...);
QString &QString::setNum(float n, char format = 'g', int precision = 6);
float kkk = 125.21f;
QString lll = QString::asprintf("%.2f",kkk);
QString mmm = QString::number(kkk,'f',2);
5. QString的常用功能
//在字符串前面或后面添加字符串
QString &QString::append(const QString &str);
QString &QString::prepend(const QString &str);
//英文字符串大小写转化
QString QString::toUpper() const;
QString QString::toLower() const;
//获取字符串中字符个数,以下三函数相同。注意若有汉字,一个汉字为一个字符
int QString::count() const;
int QString::size() const;
int QString::length() const;
//去空格
QString QString::trimmed() const;//去掉字符串首尾的空格
QString QString::simplified() const;//去掉字符串首尾的空格,并且中间的连续空格用一个空格替代
//判断
bool QString::isEmpty() const;//为空时返回true
bool QString::isNull() const;//未赋值时返回true
//查找
//查找是否包含str字符串,cs指定是否大小写敏感
bool QString::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
//查找str出现的位置,from指从第几个字符开始查找
int QString::indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
//反向查找str最后出现的位置,from指从第几个字符开始查找,from = -1时从最后一个字符开始查找
int QString::lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
//判断是否以s结束或开始
bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
bool QString::startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
//取字符串
QString QString::left(int n) const;//取左边n个字符串
QString QString::right(int n) const;//取右边n个字符串
QString QString::mid(int position, int n = -1) const;//从第position个字符开始取n个字符串
//从字符串中提取以sep作为分隔符,从start端到end端的字符串
QString QString::section(const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
QString str;
QString data = "forename**middlename**surname**phone";
str = data.section("**", 2, 2); // str == "surname"
str = data.section("**", -3, -2); // str == "middlename**surname"
1524

被折叠的 条评论
为什么被折叠?



