Qt中的QString类

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"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值