当前位置: 首页 > news >正文

QString详解

QString存储16位Qchar(Unicode)字符串
QString使用隐式共享(copy-on-write)来提高性能。

什么是Unicode?

unicode是一种国际标准,支持当今使用的大多数操作系统,他是US-ASCII和Latin-1的超集(与子集相同字符编码相同)

QString字符串的创建

#include "mainwindow.h"#include <QApplication>int main(int argc, char* argv[])
{//    QApplication a(argc, argv);QString b;QString c { "lave" }; //大括号,括住代表初始化c = "cest";c = ("ce");//如果是std::string字符串,需要使用c_str();转换std::string c1 = "c1";QString c2 = c1.c_str();qDebug() << "C2=" << c2;std::string s1 = "s1";QString s2 = QString::fromLatin1(s1.data(), s1.size());//    QString s2 = QString::fromStdString(s1);qDebug() << "s1.data=" << s1.data() << " s1.size=" << s1.size(); //获取s1的数据和大小qDebug() << "s2=" << s2;char c3[] = "a array";QString s3 = QString(c3);qDebug() << "s3=" << s3;b.append("class"); //后面添加b.prepend("我"); //前面添加qDebug() << "c=" << c;qDebug() << "b=" << b;qDebug() << "this is string has " << b.count() << "characters"; // b.count()获取字符长度,中文占一个qDebug() << b.toUpper(); //转为大写qDebug() << b.toLower(); //小写qDebug() << b[0]; //可以修改qDebug() << b.at(1); //不可修改qDebug() << b[12]; //超出,报错//    return a.exec();
}

构建字符串

 //构造字符串QString s1 = "这是第%1个例子";int n = 7;qDebug() << s1.arg(n); //&1代表占位符QString s2 = "We have %1 lemons and %2 oranges";double ln = 1.2;double on = 3;qDebug() << s2.arg(ln).arg(on);

子字符串

  QString s1 = "The Right Left";qDebug() << s1.right(5); //从右边取5个qDebug() << s1.left(4); //从左边取4个

遍历字符串

需要添加命名空间 

using namespace Qt;
#include "mainwindow.h"#include <QApplication>
#include <QTextStream>using namespace Qt;int main(int argc, char* argv[])
{QString s1 = "我有一个梦想!";QTextStream out(stdout); //标准输出out.setEncoding(QStringConverter::System); //设置编码格式,为系统编码//方式一://    for (QChar qc : s1) { //遍历 范围for//        out << qc << "";//    }//方式二://    for (QChar* it = s1.begin(); it != s1.end(); it++) {//        out << *it << "";//    }//方式三:for (int i = 0; i < s1.size(); i++) {out << s1.at(i) << ""; //at比[]快,因为at只读}out << endl;return 0;
}

字符串比较

QString::compare返回整型:
        0表示相等
        负数表示小于
        正数表示大于

#include "mainwindow.h"#include <QApplication>
#include <QTextStream>
using namespace Qt;
#define STR 0 //定义宏int main(int argc, char* argv[])
{const int STR_EQUAL = STR;QString s1 = { "Rain" };QString s2 = { "rain" };QString s3 = { "rain\n" };if (QString::compare(s2, s3) == 0) {qDebug() << "s2和s3相等";} else {qDebug() << "s2和s3不相等";}if (QString::compare(s1, s2, Qt::CaseInsensitive) == STR_EQUAL) { //大小写不敏感qDebug() << "s2和s3相等";} else {qDebug() << "s2和s3不相等";}s3.chop(1); //从尾部删除1个字符return 0;
}

字符类型

字符分为:数字,字母,空白字符,和标点符号
QChar 有 isDigit、isleter、 isSpaec 、isFunt函数

#include "mainwindow.h"#include <QApplication>
#include <QTextStream>
using namespace Qt;
#define STR 0 //定义宏int main(int argc, char* argv[])
{const int STR_EQUAL = STR;QString s1 = { "7 while ,3 red roces." };int digits = 0, letters = 0, spaces = 0, puncts = 0; //赋值,不可以使用,分开,必须全部for (QChar ch : s1) {if (ch.isDigit()) {digits++;} else if (ch.isLetter()) {letters++;} else if (ch.isSpace()) {spaces++;} else if (ch.isPunct()) {puncts++;}}qDebug() << QString("There are %1 characters").arg(s1.count());qDebug() << QString("There are %1 digits").arg(digits);qDebug() << QString("There are %1 letters").arg(letters);qDebug() << QString("There are %1 spaces").arg(spaces);qDebug() << QString("There are %1 puncts").arg(puncts);return 0;
}

字符串类型转换

#include "mainwindow.h"#include <QApplication>
#include <QTextStream>
using namespace Qt;
#define STR 0 //定义宏int main(int argc, char* argv[])
{const int STR_EQUAL = STR;QString s1 = { "12" };QString s2 = { "15" };QString s3, s4;qDebug() << s1.toInt() + s2.toInt(); //转为整型int n1 = 30;int n2 = 40;qDebug() << s3.setNum(n1) + s4.setNum(n2); //数字变为字符串QString s5 = "This is ";s5.remove(2, 1); //在第2个位置删除1个 "ths is "s5.replace(5, 1, "c"); // "ths ic "qDebug() << s5.toLower();qDebug() << s5.toUpper();QString allText = "<\"一级标题\">";allText.toHtmlEscaped(); //将纯文本字符串转为具有html元字符的HTML字符串qDebug() << allText;QString field1 { "name" };qDebug() << field1.rightJustified(10, '.') << "Robert"; //右对齐return 0;
}

http://www.lryc.cn/news/2571.html

相关文章:

  • SpringCloud微服务
  • Hive 连接及使用
  • android libavb深入解读
  • 【面试题】对闭包的理解?什么是闭包?
  • 笔试题-2023-乐鑫-数字IC设计【纯净题目版】
  • antd日期组件时间范围动态跟随
  • mysql一条sql语句的执行过程
  • SaaS是什么,和多租户有什么关系?
  • C语言---字符串函数总结
  • MySQL-表的基本操作
  • 开篇之作—闲聊几句AUTOSAR
  • 02- 天池工业蒸汽量项目实战 (项目二)
  • LeetCode-111. 二叉树的最小深度
  • git常用命令
  • 2022年12月电子学会Python等级考试试卷(一级)答案解析
  • 大数据未来会如何发展
  • 2022黑马Redis跟学笔记.基础篇(一)
  • 【Spring(十一)】万字带你深入学习面向切面编程AOP
  • 基于Java+SpringBoot+Vue+uniapp前后端分离图书阅读系统设计与实现
  • 2021年新公开工业控制系统严重漏洞汇总
  • Canvas鼠标滚轮缩放以及画布拖动(图文并茂版)
  • [ECCV 2020] FGVC via progressive multi-granularity training of jigsaw patches
  • Python推导式
  • Java列表List的定查改增删操作
  • day03java语言特性 JDK、JRE、JVM
  • HydroD 实用教程(二)有限元模型
  • Java中的Set集合
  • 【RabbitMQ五】——RabbitMQ路由模式(Routing)
  • 【C语言】宏定义 结构体 枚举变量的用法
  • 锁升级之Synchronized