字符串类QString

news2024/10/2 3:33:01

字符串类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);

参考文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Feign远程调用如何携带form url

这是一个需要携带参数在form url上的请求&#xff0c;正常调用方式是这样的 响应&#xff1a; 在Feign中&#xff0c;应该怎么调用呢?? 定义OpenFeignClient接口 FeignClient(value "client-service", url "http://127.0.0.1/api") public interface…

Acwing.897 最长公共子序列(动态规划)

题目 给定两个长度分别为N和M的字符串A和B&#xff0c;求既是A的子序列又是B的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数N和M。 第二行包含一个长度为N的字符串&#xff0c;表示字符串A。 第三行包含一个长度为M的字符串&#xff0c;表示字符串B。字符串…

RunnerGo相比较JMeter有哪些优势

当谈到性能测试需求时&#xff0c;JMeter和RunnerGo都提供了丰富的功能&#xff0c;包括测试场景设置、执行性能测试和性能测试结果分析。然而&#xff0c;这两工具在结构方面存在一些区别。以下是对它们进行比较的另一种角度&#xff1a; 模块化设计&#xff1a; JMeter采用…

16K个大语言模型的进化树;81个在线可玩的AI游戏;AI提示工程的终极指南;音频Transformers课程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; LLM 进化树升级版&#xff01;清晰展示 15821 个大语言模型的关系 这张进化图来自于论文 「On the Origin of LLMs: An Evolutionary …

基于压缩和差分算法的嵌入式平台远程更新设计与分析

传统的嵌入式远程更新方案普遍采用整包更新方式&#xff0c;这种方式更新数据量大&#xff0c;占用网络带宽时间长&#xff0c;同时也增加了设备的功耗。 针对这些问题&#xff0c;提出了以减少更新数据量为核心的两种远程更新方案。这两种方案分别使用LZ77压缩和BSDiff差分算…

【Linux】passwd

passwd 与 root 不同的是&#xff0c;一般帐号在更改密码时需要先输入自己的旧密码 &#xff08;亦即 current 那一行&#xff09;&#xff0c;然后再输入新密码 &#xff08;New 那一行&#xff09;。 要注意的是&#xff0c;密码的规范是非常严格的&#xff0c;尤其新的 dist…

《互联网引流:如何吸引更多用户并实现商业目标?》

互联网引流是当今数字时代中&#xff0c;企业和个人在互联网上推广自己产品、服务或内容的一种重要手段。随着互联网的普及和发展&#xff0c;越来越多的企业意识到了利用互联网引流来吸引潜在用户的重要性。 互联网引流的目标是通过各种策略和手段&#xff0c;将潜在用户转化…

Android 在程序运行时申请权限——以自动拨打电话为例

Android 6.0及以上系统在使用危险权限时必须进行运行时权限处理。 main_activity.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://sche…

WordPress集成Argon主题[CentOS7]

下载 Argon主题 https://gitcode.net/mirrors/solstice23/argon-theme/-/releases/v1.3.5?spm1033.2243.3001.5876配置并安装Argon主题 mkdir -p /home/wwwroot/default/wordpress/wp-content/uploads/ cd /home/wwwroot/default/wordpress/wp-content/uploads/# 上传并解压…

echarts自定义tooltip,给tooltip增加百分号%

1.formatter为回调函数&#xff1a; 支持返回 HTML 字符串或者创建的 DOM 实例。 (params: Object|Array, ticket: string, callback: (ticket: string, html: string)) > string | HTMLElement | HTMLElement[] 在 trigger 为 ‘axis’ 的时候&#xff0c;或者 tooltip 被…

LiveGBS流媒体平台GB/T28181常见问题-token有效期是多久如何设置token有效期有效时间接口调用token的有效时长

LiveGBS常见问题如何设置TOKEN有效时间接口调用token的有效时长 1、TOKEN有效期2、默认token有效期3、配置token_key4、如何配置一直有效的token5、动态有效期6、搭建GB28181视频直播平台 1、TOKEN有效期 调用登陆接口后&#xff0c;会获得一个token&#xff0c;默认的有效期是…

PCB封装设计指导(十四)保存并产生device文件

PCB封装设计指导(十四)保存并产生PSM和device文件 封装命名完成之后,基本上封装的建立也接近结束,如果调网表使用的是第三方网表,还需要device文件才能调入。 但是PSM文件是不管第一方和第三方网表都是需要的,下面介绍如何产生这两个文件。 打开封装文件,如下图点击Fil…

深入理解 Linux 文件系统:从根目录到用户主目录

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

存储过程——用户自定义变量、局部变量

1.用户自定义变量 在会话一定义的变量在会话二中是用不了的。 使用set指令定义变量,并为变量赋值&#xff0c;mysql中赋值推荐使用 :&#xff0c;因为在mysql中没有这个比较运算&#xff0c;也带有比较运算的功能&#xff0c;因此赋值运算推荐使用 : set myname itcast; se…

一条sql搞崩了整个业务 ai问答

事件起因&#xff0c;我的小伙伴群里有个人发了这么一个消息 我去分析了一下原因&#xff08;&#xff09;&#xff0c;有不同观点评论区评论 使用连接且连接条件都唯一 不使用连接且where条件都唯一

【java】【面对对象高级1】static

目录 1、static修饰成员变量 1.1 修饰成员变量 1.2 成员变量的执行原理 2、static修饰成员变量的应用场景 3、static修饰成员方法 3.1 修饰成员方法 3.2 成员方法的执行原理 4、static修饰成员方法的应用场景 4.1 MyUtil工具类 4.2 main 5、static的注意事项 5.1 类方法…

Vue中TodoList案例_编辑

nextTick: MyItem.vue 加一个编辑按钮&#xff0c;input框&#xff1a;blur失去焦点时触发事件handleBlur&#xff0c;ref获取真实dom&#xff1a; <inputtype"text"v-show"todo.isEdit":value"todo.title"blur"handleBlur(todo,$even…

Access violation at address. Read of address FFFFFFC

常规的数据操作&#xff1a; 见上图&#xff0c;数据保存在.ClientDataSet1数据集中&#xff0c;为了将参数逐条保存在Txt文件中&#xff0c;做了对ClientDataSet&#xff08;DBGridEh&#xff09;的循环写盘和读盘操作&#xff1a; 但是&#xff0c;原代码通过数据集循环 &…

IP 服务级别协议监控

工作场所分布在全球多个地点的企业通过 WAN 链接共享和接收数据&#xff0c;这需要跨广泛的网络位置和路径持续监控网络质量&#xff0c;以实现优化的性能水平和不间断的服务交付。 IP 服务水平协议 IP 服务级别协议 &#xff08;IP SLA&#xff09; 是一种网络测量技术&…

php开发实战分析(10):城市区县联动筛选

php开发实战分析系列目录 php开发实战分析(1)&#xff1a;mysql操作字段&#xff08;添加、删除、修改&#xff0c;多数据表中新增多个字段&#xff09;php开发实战分析(2)&#xff1a;cookie的动态使用&#xff08;设置、获取、删除、猜你喜欢原理、购物车调用&#xff09;ph…