Qt提供的另外一个类 QString

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);

下面举例示意:

Qt提供的另外一个类 QString

Qt提供的另外一个类 QString 明明字符串长度是一样的为啥计算的两个结果不一样呢?

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

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

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

 

上一篇:Qt-QProcess:启动外部程序失败


下一篇:UML从需求到实现---类图(2)