ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt提供的另外一个类 QString

2021-09-06 19:02:26  阅读:151  来源: 互联网

标签:const Qt 另外 int QString str 字符串


Qstring也是封装了字符串,但是内部编码为  utf8  ,UTF-8属于Unicode字符集,它固定使用多个字节(window为2字节,Linux为3字节)来表示一个字符。

构造函数

// 构造一个空字符串对象
QString::QString();
// 将 char* 字符串 转换为 QString 类型
QString::QString(const char *str);
// 将 QByteArray 转换为 QString 类型
QString::QString(const QByteArray &ba);
// 其他重载的同名构造哈桑农户可参考Qt帮助文档

数据操作

// 尾部追加数据
// 其他重载的同名函数可参考Qt帮助文档
QString &QString::append(const QString &str);
QString &QString::append(const char *str);
QString &QString::append(const QByteArray &ba);
void QString::push_back(const QString &other);

// 头部追加数据
// 其他重载的同名函数可参考Qt帮助文档
QString &QString::prepend(const QString &str);
QString &QString::prepend(const char *str);
QString &QString::prepend(const QByteArray &ba);
void QString::push_front(const QString &other);

//插入数据,将str插入到字符串第position个字符的位置(从0开始)
// 其他重载的同名函数可参考Qt帮助文档
QString &QString::insert(int position,const QString &str);
QString &QString::insert(int position,const char *str);
QString &QString::insert(int position,const QByteArray &str);

// 删除数据
// 从大字符串中删除len个字符,从第pos个字符的位置开始删除
QString &QString::remove(int position,int n);

// 从字符串的尾部删除n个字符
void QString::chop(int n);
// 从字符串的position位置将字符串截断(前部分留下,后部分被删除)
void QString::truncate(int position);
// 将对象中的数据清空,使其为null
void QString::clear();

// 字符串替换
// 将字节数组中的子字符串 before替换为after
// 参数 cs 为是否区分大小写,默认区分大小写
// 其他重载的同名函数可参考Qt帮助文档
QString &QString::replace(const QString &before,const QString &after,Qt::CaseSensitivity cs=Qt::CaseSensitive);

子字符串查找和判断

// 参数 cs 为是否区分大小写,默认区分大小写
// 其他重载的同名函数可参考Qt帮助文档

// 判断字符串中是否包含子字符串str,包含返回true,否则返回false
bool QString::contains(const QString &str,Qt::CaseSensitivity cs=Qt::CaseSensitive) const;

// 判断字符串是否以字符串ba开始,是返回true,不是返回false
bool QString::startsWith(const QString &s,Qt::CaseSensitivity cs=Qt::CaseSensitive) const;

// 判断字符串是否以字符串ba开始,是返回true,不是返回false
bool QString::endsWith(const QString &s,Qt::CaseSensitivity cs=Qt::CaseSensitive) const;

遍历

// 使用迭代器
iterator QString::begin();
iterator QString::end();

// 使用数组的方式进行遍历
// i的取值范围 0<=position<size()
const QChar QString::at(int posotion) const;
const QChar QString::operator[](int posotion) const;

查看字节数

// 返回字节数组对象中字符的个数
int QString::length() const;
int QString::size() const;
int QString::const() const;

// 返回字节串对象中 子字符串 str 出现的次数
// 参数 cs 为是否区分大小写,默认区分大小写
int QString::count(const QStringRef &str,Qt::CaseSensitivity cs=Qt::CaseSensitive) const;

类型转换

// int,short,long,float,double ->QByteArray
// 其他重载的同名函数可参考Qt帮助文档
QString &QString::setNum(int n,int base=10);
QString &QString::setNum(short n,int base=10);
QString &QString::setNum(long n,int base=10);
QString &QString::setNum(float n,char format='g',int precision=6);
QString &QString::setNum(double n,char format='g',int precision=6);
[static] QString QString::number(long n,int base=10);
[static] QString QString::number(int n,int base=10);
[static] QString QString::number(double n,char format='g',int precision=6);

//  QString -> int,short,long,float,double
int QString::toInt(bool *ok=Q_NULLPTR,int base=10) const;
short QString::toShort(bool *ok=Q_NULLPTR,int base=10) const;
long QString::toLong(bool *ok=Q_NULLPTR,int base=10) const;
float QString::toFloat(bool *ok=Q_NULLPTR) const;
double QString::toDouble(bool *ok=Q_NULLPTR) const;

//std::strong -> QString
[static] QString QString::fromStdString(const std::string &str);
// QString -> std::string
std::string QString::toStdString() const;

// QString -> QByteArray
// 转换为本地编码,跟随操作系统
QByteArray QString::toLocal8Bit() const;
// 转换为 Latin-1 编码的字符串 不支持中文
QByteArray QString::toLatin-1() const;
// 转换为 utf8 编码格式的字符串(常用)
QByteArray QString::toUtf8() const;

// 所有字符转换为大写
QString QString::toUpper() const;
// 所有字符转换为小写
QString QString::toLower() const;

// 字符串格式
// 其他重载的同名函数可参考Qt帮助文档
QString QString::arg(const QString &a,int filedWidth=0;QChar fillChar=QLatinChar( ' ' )) const;
QString QString::arg(int a,int filedWidth=0;int base=10;QChar fillChar=QLatinChar( ' ' )) const;

// 示例程序
int i;           // current file's number
int total;       // number of files to process
QString fileName;  //current file's to process
QString status=QString("Processing file %1 of %2 %3").arg(i).arg(total).arg(fileName);

下面举例示意:

 明明字符串长度是一样的为啥计算的两个结果不一样呢?

因为呀:QString 的长度是字符个数,一个汉字算一个字符,用手指头扒拉扒拉"你很棒!"就是四个字符

而QByteArray 的长度是字符串占用的字节数,一个汉字3个字符,这样算下来就是12个字符了

好了经过几天时间把QByteArray和QString大概了解了,奥里给!!!

 

标签:const,Qt,另外,int,QString,str,字符串
来源: https://blog.csdn.net/GiGi_Princess/article/details/120136792

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有