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大概了解了,奥里给!!!