首页 > 其他分享 >QT字符串类应用与常用数据类型:

QT字符串类应用与常用数据类型:

时间:2024-09-21 22:50:38浏览次数:3  
标签:QT int 数据类型 argv QString 字符串 include 函数

写在开头:
我们可以去这个网站进行学习C++的相关知识:https://github.com/0voice

目录

1、Qt字符串类应用

(1)操作字符串的方式

(2)查询字符串的方式:

2、Qt 常见基本数据类型( 注意:定义在#include )

总结:


1、Qt字符串类应用

(1)操作字符串的方式

第一:QString提供一个二元的“+”操作符,主要用于组合两个字符串。

QString str1 = "Hello world";

这段代码传递给QString一个const char * 类型的ASCII字符串"Hello world",它被解释为一个典型的以"\0"结尾的C类型字符串

我们可以查看这个程序:

main.cpp

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
​
​
    // 1:QString 提供二元“+”操作符应用,功能跟“+=”一样】
    QString str1 = "Ling";
    str1 = str1 + "Sheng EDU";
    qDebug() << str1;   // 打印信息,注意,这个打印会带上双引号,这个代码结果为 "Ling Sheng EDU"
    qDebug() << qPrintable(str1);   // 而这个不会带上双引号,这个代码结果为 Ling Sheng EDU
    return a.exec();
​
​
​
}

第二:QString::append() 函数具备与 "+=" 操作符同样的功能,直接在一个字符串末尾添加另一个字符串。

示例程序如下:

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
​
    // 2.QString::append()函数
    QString str2 = "Good";
    QString str3 = "Bye";
    str2.append(str3);
    qDebug() << qPrintable(str2);   // GoodBye
​
    str2.append(" Hello world!");
    qDebug() << qPrintable(str2);   // GoodBye Hello world!
​
    return a.exec();
​
​
​
​
}

第三:组合字符串:QString::sprintf()函数。其实它跟C++库中的sprintf函数是一样的,如果没有学过sprintf函数的话,可以看别人的这篇文章:字符串函数 sprintf() 详解-CSDN博客

示例代码如下:

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
​
    //3. QString::sprintf()函数
    QString strtemp;
    strtemp.sprintf("%s", "Hello ");    // 将strtemp的值赋值给hello
    qDebug() << qPrintable(strtemp);    // 输出结果为Hello
​
    strtemp.sprintf("%s", "Hello world.");  // 将strtemp赋值为hello world. 并将之前的赋值给覆盖掉
    qDebug() << qPrintable(strtemp);    // 输出结果为Hello world.
    return a.exec();
​
​
​
​
}

第四:字符串组合方式QString::arg()函数,该函数的重载可以处理多种数据类型。因为它类型安全,同时支持Unicode,可以改变%n参数顺序

示例代码如下:

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
​
    // 4.QString::arg()函数,该函数的重载可以处理多种数据类型。
    QString strTemp;
    strTemp = QString("%1 was born in %2.").arg("xiaozeng").arg("2004");    // 将要加入的字符串通过%n来进行加入
​
    qDebug() << qPrintable(strTemp);        // xiaozeng was born in 2004
​
    strTemp = QString("%2 was born in %1.").arg("2004").arg("lihua");       // 我们也可以调整参数的位置,从而达到不同的效果
​
    qDebug() << qPrintable(strTemp);        // lihua was born in 2004
​
    return a.exec();
​
​
​
​
}

额外的知识:

我们还有其它组合字符串方法: insert()/prepend()/replace()等等:

1.insert()

  • 在指定位置插入字符串,也可以是字符

// 1.insert方法
QString str = "Hello!";
​
str.insert(5, " world");    // 在索引为5的位置插入 world
qDebug() << qPrintable(str);  // Hello world!

2.prepend()

  • 在字符串前面添加字符串,也可以是字符

QString str = "world!";
str.prepend("Hello ");  // 在字符串的前面添加"Hello "
qDebug() << str;        // 输出:Hello world!

3.replace()

  • 替换掉指定的字符串,也可以是字符和正则表达式

QString str = "Hello world!";
str.replace("world", "Qt");  // 将"world"替换为"Qt"
qDebug() << str;             // 输出:Hello Qt!

(2)查询字符串的方式:

  1. QString::startsWith()函数

    注意:

    Qt::CaseSensitive表示对大小写敏感

    Qt::CaseInSensitive表示对大小写不敏感

    #include <QCoreApplication>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    ​
    ​
        QString strTemp = "How are you";
        qDebug() << strTemp.startsWith("How", Qt::CaseSensitive);   // Qt::CaseSensitive代表大小写敏感,结果为true
        qDebug() << strTemp.startsWith("HOW", Qt::CaseInsensitive); // Qt::CaseInSensitive代表大小写不敏感,结果是true
        qDebug() << strTemp.startsWith("HOw", Qt::CaseSensitive);   // 由于大小写敏感,所以结果是false
        return a.exec();
    ​
    ​
    ​
    ​
    }

2.QString::contains()函数

这个函数是用于判断输入的字符串是否在该字符串中出现过。

 // QString::contains()函数
QString temp = "How old are you";
​
qDebug() << temp.contains("old", Qt::CaseSensitive);    //true
​
qDebug() << temp.contains("are", Qt::CaseSensitive);    //true

3.QString::toInt()函数

这个函数用于将字符串改变成int类型,toDouble()/toFloat()/toLong()也是同一个道理。

QString temp = "25";
bool isLoop;
int num = temp.toInt(&isLoop, 16);  // 把"25"转换为16进制的整形数字,也就是2*16的一次方加上2*16的零次方 = 37
std::cout << "isLoop = " << isLoop << " num = " << num << std::endl;
int num1 = temp.toInt(&isLoop, 10); // 把"25"转换为10进制的整形数字,也就是25
std::cout << "isLoop = " << isLoop << " num1 = " << num1 << std::endl;
int num2 = temp.toInt(&isLoop, 2);  // 把"25"转换为2进制的数字,但是由于二进制中没有5这个数字,所以转换无效,isLoop是false,num2是0
std::cout << "isLoop = " << isLoop << " num2 = " << num2 << std::endl;

4.QString::compare()函数

compare函数用于比较字符串的大小,不过其实是比较字符串首个字符的大小,这个函数一般用来判断两个字符串是否相同

int a1 = QString::compare("abcd", "ABCD", Qt::CaseInsensitive);  // 由于对大小写不敏感,所以a的结果是0,0代表着这两个字符串结果是一样的
int b1 = QString::compare("abcd", "Cat", Qt::CaseSensitive);     // 由于对大小写敏感,所以a的ASCII码大于C的,结果为正数30, 因为根据ASCII码, a-C = 30
int c1 = QString::compare("abcd", "Cat", Qt::CaseInsensitive);     // 由于对大小写不敏感,所以a的ASCII码小于c的(因为这里把C看成了c),结果为负数 -2
​
std::cout << "a1 = " << a1 << std::endl;    // 0
std::cout << "b1 = " << b1 << std::endl;    // 30
std::cout << "c1 = " << c1 << std::endl;    // -2

5.还可以将字符串转换成ASCII码

QString str = "ABC abc";
QByteArray bytes = str.toUtf8();    // 利用字节数组来存储数据, 并以 UTF-8 编码的格式表示。
for(int i = 0; i < str.size(); i++){
    qDebug() << int(bytes.at(i));       // int(bytes.at(i)) 将该字节值转换为整数,以便输出到调试控制台。
​
}

结果如下:

65
66
67
32
97
98
99

2、Qt 常见基本数据类型( 注意:定义在#include <QtGlobal> )

额外的知识:

QString类型还可以访问当前日期和进行大小写的转换操作,示例代码如下:

#include <QCoreApplication>
#include <QDebug>
#include <QString>
#include <iostream>
#include <QDateTime>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
​
    QDateTime dt;
    QString strDT = dt.currentDateTime().toString("yyyy-MM-dd hh:mm:ss");   // 设置当前的时间格式,并转换为字符串
    qDebug() << strDT << endl;
​
​
​
    QByteArray a1("Qt Creator Hello World.");
    QByteArray b1 = a1.toLower();       // 将字符大写转换为小写,小写不变
    qDebug() << qPrintable(b1);
    QByteArray c1 = a1.toUpper();       // 将字符串小写转换为大写,大写不变
    qDebug() << qPrintable(c1);
​
    return a.exec();
}

结果如下:

"2024-09-21 22:38:30"
​
qt creator hello world.
QT CREATOR HELLO WORLD.

总结:

(1)操作字符串的方式:

  • "+"操作符
  • QString::append()
  • QString::sprintf()函数。
  • QString::arg()函数
  • 还有其它组合字符串方法: insert()/prepend()/replace()等等:

(2)查询字符串的方式:

  • QString::startsWith()函数
  • QString::contains()函数
  • QString::toInt()函数
  • QString::compare()函数

标签:QT,int,数据类型,argv,QString,字符串,include,函数
From: https://blog.csdn.net/m0_74655006/article/details/142426227

相关文章

  • 带你0到1之QT编程:十五、探索QSplitter和QDockWidget的简单应用技巧
    此为QT编程的第十五谈!关注我,带你快速学习QT编程的学习路线!每一篇的技术点都是很很重要!很重要!很重要!但不冗余!我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点!码农不易,各位学者学到东西请点赞支持支持!开始部分:总:QSplitter提供的是一种灵活的可拖拉布局方式来管......
  • Qt表格入门
    摘要    表格作为数据展示的界面,会在很多场景下使用。Qt为我们提供了使用简单方便和扩展性强的表格视图,这里做一个简单的入门整理。    个人能力有限,有错误欢迎留言指正,如果你有更好的方法,也欢迎分享讨论。关键词    Qt、表格、过滤、筛选、自定义单元格、排序......
  • D13【python接口自动化学习】-python基础之内置数据类型
    day13集合学习日期:20240920学习目标:内置数据类型--22常见常新:集合的常见操作学习笔记:集合与set对象创建set对象set对象的常用操作#使用set对象对元组去重color=('r','g','b','g','b','b')#创建元组new_color=set(color)#转换set对象去重print(new_color)#......
  • D14【python接口自动化学习】-python基础之内置数据类型
    day14字典的定义学习日期:20240921学习目标:内置数据类型--23字典:如何处理映射类型的数据?学习笔记:映射与字典字典的定义字典的删除总结字典用于存储键值对,键值对之间有关联字典键要求可哈希,一般采用字符串,元组做字典的键值可以使用dic()函数、推导式和花括号{}三......
  • 2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号‘?
    2024-09-21:用go语言,给定一个字符串s,字符串中的每个字符要么是小写字母,要么是问号’?‘。对于一个仅包含小写字母的字符串t,我们定义cost(i)为在t的前i个字符中与t[i]相同的字符的出现次数。字符串t的分数是所有位置i的cost(i)之和。现在的任务是用小写字母替换所有的问......
  • JAVA——字符串
    API和API帮助文档API概念:应用程序编程接口理解:API就是别人写好的东西,可以直接使用JavaAPI:指的是JDK提供的各种功能的Java类这些类将底层的实现封装了起来,我们只需要学习如何使用这些类即可API帮助文档帮助我们更好的使用以及查询各种API的一种工具String概述Str......
  • doris 字符串字段list分区
    分区列支持 BOOLEAN,TINYINT,SMALLINT,INT,BIGINT,LARGEINT,DATE,DATETIME,CHAR,VARCHAR 数据类型,分区值为枚举值。只有当数据为目标分区枚举值其中之一时,才可以命中分区。CREATETABLE`table1`(`BUKRS`varchar(12)NULL,`GJAHR`varchar(12)NOTNULL,`......
  • 2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号‘?
    2024-09-21:用go语言,给定一个字符串s,字符串中的每个字符要么是小写字母,要么是问号'?'。对于一个仅包含小写字母的字符串t,我们定义cost(i)为在t的前i个字符中与t[i]相同的字符的出现次数。字符串t的分数是所有位置i的cost(i)之和。现在的任务是用小写字母替换所有的问号'?',使得......
  • 2024-09-21:用go语言,给定一个字符串 s,字符串中的每个字符要么是小写字母,要么是问号‘?
    2024-09-21:用go语言,给定一个字符串s,字符串中的每个字符要么是小写字母,要么是问号'?'。对于一个仅包含小写字母的字符串t,我们定义cost(i)为在t的前i个字符中与t[i]相同的字符的出现次数。字符串t的分数是所有位置i的cost(i)之和。现在的任务是用小写字母替换所有的问号'?',使得......
  • 华为OD机试真题-字符串统计及重排-2024年OD统一考试(E卷)
     最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。题目描述给出一个仅包含字母的字符串......