字符串类QString

Qt中不仅支持C, C++中的字符串类型, 而且还在框架中定义了专属的字符串类型。

Cchar*
C++std::string, char*
QtQByteArray, QString

QByteArray

QString和QByteArray的函数很多都是相似的。。。

构造函数

在这里插入图片描述

    QByteArray b("good");
    QString q1();
    QString q2("hello");
    QString q3(b);
    qDebug()<<q1;qDebug()<<q2;qDebug()<<q3;

在这里插入图片描述

数据操作

// 尾部追加数据
// 其他重载的同名函数可参考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);

尾部追加

    QString q4("hello");
    q4.append("wangjianlin1");
    qDebug()<<q4;
    QString q5("wangjianlin2");
    q4.append(q5);
    qDebug()<<q4;
    QByteArray q6("wangjianlin3");
    q4.append(q6);
    qDebug()<<q4;

在这里插入图片描述

头部追加

    QString q7("hello");
    q7.prepend("wangjianlin1");
    qDebug()<<q7;
    QString q8("wangjianlin2");
    q7.prepend(q8);
    qDebug()<<q7;
    QByteArray q9("wangjianlin3");
    q7.prepend(q9);
    qDebug()<<q7;

在这里插入图片描述

插入数据

    QString q10("wowo");
    q10.insert(2,"hello");
    qDebug()<<q10;
    QString q11("xx");
    QByteArray q12("aa");
    q10.insert(4,q11);
    qDebug()<<q10;
    q10.insert(6,q12);
    qDebug()<<q10;

在这里插入图片描述

删除数据

    qDebug()<<q10;
    q10.remove(2,5);
    qDebug()<<q10;
    q10.chop(3);
    qDebug()<<q10;
    q10.truncate(2);
    qDebug()<<q10;
    q10.clear();
    qDebug()<<q10;

在这里插入图片描述

字符串替换

    QString q15("hello");
    QString q16("l");
    QString q17("x");
    q15.replace(q16,q17);
    qDebug()<<q15;

在这里插入图片描述

字符串查找和判断

// 参数 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;
    QString s1 = "hello my name is wangjianlin";
    QString s2 = "my";
    QString s3 = "hello";
    QString s4 = "lin";
    std::cout<<s1.contains(s2)<<std::endl;
    std::cout<<s1.startsWith(s3)<<std::endl;;
    std::cout<<s1.endsWith(s4)<<std::endl;;
    std::cout<<s1.endsWith(s3)<<std::endl;

在这里插入图片描述

遍历

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

// 使用数组的方式进行遍历
// i的取值范围 0 <= position < size()
const QChar QString::at(int position) const
const QChar QString::operator[](int position) const;
    QString s1 = "helloworld";
    for(int i =0;i<s1.length();i++){
        qDebug()<<s1.at(i);
    }

在这里插入图片描述

查看字节数

// 返回字节数组对象中字符的个数 (字符个数和字节个数是不同的概念)
int QString::length() const;
int QString::size() const;
int QString::count() const;

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

类型转换

// 将int, short, long, float, double 转换为 QString 类型
// 其他重载的同名函数可参考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;

// 将标准C++中的 std::string 类型 转换为 QString 类型
[static] QString QString::fromStdString(const std::string &str);
// 将 QString 转换为 标准C++中的 std::string 类型
std::string QString::toStdString() const;

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

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

将int, short, long, float, double 转换为 QString 类型

    QString s1,s2,s3,s4;
    int a1 = 12;short a2=12;long a3 =12;double a4 = 12.14566;
    s1.setNum(a1,16);
    s2.setNum(a2,16);
    s3.setNum(a3,16);
    s4.setNum(a4,'g',6);
    qDebug()<<s1;
    qDebug()<<s2;
    qDebug()<<s3;
    qDebug()<<s4;

在这里插入图片描述

将 QString 转换为 int, short, long, float, double 类型

    s1 = "11";
    s2 = "12";
    s3 = "14";
    bool ok;
    int a5 = s1.toInt(&ok,10);
    qDebug()<<ok<<a5;
    short a6 = s2.toShort(&ok,10);
    qDebug()<<ok<<a6;
    long a7 = s3.toLong(&ok,10);
    qDebug()<<ok<<a7;
    double a8 = s4.toDouble(&ok);
    qDebug()<<ok<<a8;

在这里插入图片描述

将标准C++中的 std::string 类型 转换为 QString 类型

    std::string ss ="this";
    QString a10 = QString::fromStdString(ss);
    qDebug()<<a10;

在这里插入图片描述

QString 转换为 标准C++中的 std::string 类型

    std::string ss2 =a10.toStdString();
    std::cout<<ss2<<std::endl;

在这里插入图片描述

字符串格式

// 其他重载的同名函数可参考Qt帮助文档, 此处略
QString QString::arg(const QString &a, 
          int fieldWidth = 0, 
          QChar fillChar = QLatin1Char( ' ' )) const;
QString QString::arg(int a, int fieldWidth = 0, 
          int base = 10, 
          QChar fillChar = QLatin1Char( ' ' )) const;

// 示例程序
int i;                // 假设该变量表示当前文件的编号
int total;            // 假设该变量表示文件的总个数
QString fileName;     // 假设该变量表示当前文件的名字
// 使用以上三个变量拼接一个动态字符串
QString status = QString("Processing file %1 of %2: %3")
                  .arg(i).arg(total).arg(fileName);

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值