C++和QT

news2024/12/29 14:45:43

 

什么是QT

Qt 是一个跨平台的 C++图形用户界面应用程序框架。

它为应用程序开发者提供建立艺术级图形界面所需的所有功能。

它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

QT的优点

跨平台,几乎支持所有的平台

接口简单,容易上手,学习 QT 框架对学习其他框架有参考意义。一定程度上简化了内存回收机制

开发效率高,能够快速的构建应用程序。

有很好的社区氛图,市场份额在缓慢上升。

可以进行嵌入式开发。

C++

C++是C语言的拓充,C++包含C的所有属性,C语言的语法在C++中都合法

C编程思想:面向过程(强调执行过程)

C++编程思想:面向对象(半面向过程,半面向对象)

C++中一切皆对象

C++中类的三大属性:封装,继承,多态

C++对C的兼容

c语言文件:XXX.c 编译c文件:gcc XXX.c -o

C++文件:XXX.cpp 编译C++文件:g++ XXX.cpp -o

c语言头文件: eg #include

C++头文件: eg #include

C++的输入输出

cout(输出类的类对象 )

cout具有输出功能,能够自动识别数据类型,不需要加格式符(%s,%d等)。

<<:插入符(输出符)

endl:换行(\n)

cin(输入类的类对象 )

>>:提取符(输入符)

数据类型

C++的数据类型:基本数据类型,构造数据类型

基本数据类型:int,char,short,float,double,long,bool,string

构造数据类型:数组,指针,结构体,共用体,枚举,类

布尔类型(bool)

bool:true==1,false==0

boolalpha(类型)

C++中的字符串string

C语言中存储字符串,使用字符数组或者字符指针指向。

C++依然可以使用字符数组存储字符串,除此之外可以使用string存储字符串。

字符串的赋值和初始化

    string str1;
    string str2 = "hello";  //初始化
    cout << "str2 = " << str2 << endl;
    string str3 = str2;  //初始化
    cout << "str3 = " << str3 << endl;
    string str4(str3);   //等价于 string str4 = str3; 拷贝构造函数
    cout << "str4 = " << str4 << endl;
    string str5(str2,3);   //从下标位3的地方开始赋值
    string str6(8,'m');   //赋值8个m
    cout << "str6 = " << str6 << endl;

    char *p = (char *)"hello";  //C++中又字符串类型变量所以不能直接用char*来指向字符串,需要强转

C++字符串的比较

由于C++中有字符串类型的变量,所以字符串之间的比较,就和基本数据类型之间比较由于,借助于关系运算符直接比较即可。

  string name = "admin", password = "111";
    string username,userpassword;
    cout << "请输入账号密码:" << endl;
    cin >> username >> userpassword;
    if(username == name && userpassword == password)
    {
        cout << "登录成功!" << endl;
    }
    else
    {
        cout << "登录失败!" << endl;
    }

字符串中常用的函数

size():字符串的大小,元素个数

empty():判空,如果字符串为空,返回true,否则返回false

capacity():容量的大小,容量的大小>= 元素个数

C++字符串和C语言字符串的风格互换

C语言的字符串可以直接转换成C++风格的字符串

C++风格的字符串不能直接转换成C风格的字符串,需要使用c_str()进行转换

字符串的元素访问

[] 小标访问元素 ---->不判断是否越界

at() 访问元素 ---->判断是否越界

    string str2 = "abc";
    cout << str2[2]  << endl;
    cout << str2[6] << endl;
    cout << str2.at(2) << endl;
    cout << str2.at(6) << endl;

字符串的输入

C++的字符串的输入默认以空格结束

getline(cin,str);//吸收空格

    string name;
    getline(cin,name);
    cout << name << endl;

数组array

C++中的数组可以使用array这个容器完成,需要包含头文件#inlude

    //定义一个数组
    array<int,5> a;//int a[5]
    //::--->作用域限定符,iterator--->迭代器==指针
    array<int,5> ::iterator iter;


    //begin():第一个元素的地址
    //end():最后一个元素的下一个元素的地址
    for(iter = a.begin();iter != a.end();iter++)
    {
        cin >> *iter;
    }
    for(iter = a.begin();iter != a.end();iter++)
    {
        cout << *iter <<endl;
    }

命名空间

多人协同开发,避免命名污染

命名空间相当于给名字加个姓氏

std命名空间的使用

#include <iostream>
#include<iomanip>
#include<string.h>
#include<array>
//iostream:标准输入输出流

//使用命名空间的方式3:
using namespace std;
//using:使用命名空间的关键字
//namespace:命名空间的关键字
//std:标注的命名空间

//使用命名空间的方式2:声明使用命名空间中的某个名字,后期都可以直接使用,其他名字依旧要加上命名空间名和作用域限定符
using std::cout;

int main()
{
    //使用命名空间的方式1:使用某个名字,将命名空间和作用域限定符加上
    std::cout << "hello world!" << std::endl;
    //使用命名空间的方式2:
    cout << "hello world!" << std::endl;
    //使用命名空间的方式3:
    cout << "hello world!" << std::endl;

    return 0;
}

自定义命名空间

格式:

namespace 命名空间名(一般首字母)
{
    数据类型 变量1;
    数据类型 变量2;
    数据类型 变量3;
    。。。
    数据类型 变量n;
}
#include <iostream>

using namespace std;

//自定义命名空间
namespace Zhangsan
{
    int cuihua;
    namespace Xiaosan //自定的命名空间可嵌套
    {
        int cuihua; //一级一级的找
    }
}
namespace Zhangsan  //可以在同一个作用域下,定义相同的命名空间名 相当于合并
{
    //int cuihua;重复定义
    int a;
    int b;
}

namespace Lisi
{
    int cuihua;
    namespace Xiaosan //自定的命名空间可嵌套
    {
        int cuihua; //一级一级的找
    }
}

using Zhangsan::cuihua;

int main()
{
//    Zhangsan::cuihua = 19;
//    Lisi::cuihua = 39;
    
    cuihua = 19;
    Zhangsan::Xiaosan::cuihua = 78;

    return 0;
}

练习

提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数

要求使用C++风格字符串完成

#include <iostream>
#include<iomanip>
#include<string.h>
#include<array>

using namespace std;

int main()
{
    cout << "请输入一个字符串"  << endl;
    string a;
    getline(cin,a);
    int len = a.size();
    int caps = 0,small = 0,count = 0,space = 0,other = 0;
    for(int i= 0;i<len;i++)
    {
        if(a[i] >= 'A' && a[i] <= 'Z')
        {
            caps++;
        }
        else if(a[i] >= 'a' && a[i] <= 'z')
        {
            small++;
        }
        else if(a[i] >= '0' && a[i] <= '9')
        {
            count++;
        }
        else if(a[i] == ' ')
        {
            space++;
        }
        else
        {
            other++;
        }
    }
    cout << "大写字符:" << caps << endl;
    cout << "小写字符:" << small << endl;
    cout << "数字:" << count << endl;
    cout << "空格:" << space << endl;
    cout << "其他字符:" << other << endl;

    return 0;
}

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

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

相关文章

《黑神话:悟空》研发公司的薪资水平

作者&#xff1a;程序员晓凡 最近全网最火爆的要属《黑神话&#xff1a;悟空》了&#xff0c;即便是我这个平时不沾游戏、不追直播的人&#xff0c;也看直播看得津津有味。 一、销量与热度背后 首先&#xff0c;让我们来看看那些令人瞩目的数字。《黑神话&#xff1a;悟空》…

AI米壳:跨境电商必备神器:批量图片翻译!

各位跨境电商的小伙伴们&#xff0c;在我们的电商之路上&#xff0c;是不是常常被产品图片翻译的问题困扰呢&#xff1f; 没错&#xff0c;以往只面对一两张图片时&#xff0c;我们可能会选择在百度上翻译&#xff0c;再用 PS 去除原来的中文文字&#xff0c;添加翻译后的语言到…

第三方软件测评中心分享:科技成果鉴定测试的必要性和流程

在飞速发展的科技时代&#xff0c;科技成果的保护和应用愈发重要&#xff0c;科技成果鉴定测试已经成为衡量和验证项目成功的重要环节。科技成果鉴定测试是指对科技项目成果进行评估、验证和认可的过程。这一过程通常由专家团队主导&#xff0c;旨在确保科技产品或研究成果达到…

Java学习第三天

总体三部分内容&#xff1a;数据类型转换、运算符使用、调用Java提供的程序 数据类型转换&#xff1a; 1.自动类型转换 类型范围小的可以直接转换给类型范围大的变量&#xff1b;例如int类型可以直接赋值为long型 int a 10; long b a; char字符型在计算机底层是一个数字…

SOMEIP_ETS_070: Union_Length_longer_as_mesage_length_allows_it

测试目的&#xff1a; 验证当设备&#xff08;DUT&#xff09;接收到一个联合&#xff08;union&#xff09;长度超出SOME/IP消息长度允许的范围时&#xff0c;是否能够返回错误消息。 描述 本测试用例旨在检查DUT在处理一个echoUNION方法的SOME/IP消息时&#xff0c;如果消…

Apache CloudStack Official Document 翻译节选(十)

关于 Apache CloudStack 的 最佳实践 &#xff08;四&#xff09; 网络流量监测与虚拟机容量规划 客户机网路集成流量监测哨兵 要想搜集客户机网路上的使用数据&#xff0c;就需要从部署在对应网路上的网络统计采集器上拉取数据。通过在Apache CloudStack云上集成流量哨兵便可…

37次8.27(docker03)

1.使用dockerfile创建应用镜像 在Docker file中定义所需要执⾏的指令&#xff0c;使⽤ docker build创建 镜 像&#xff0c;过程中会按照dockerfile所定义的内容进⾏打开临时性容 器&#xff0c;把 docker file中命令全部执⾏完成&#xff0c;就得到了⼀个容器应⽤镜 像&am…

OpenCV4深度神经网络DNN实战教程

OpenCV4深度神经网络DNN实战教程 1-概述与环境配置2-卷积神经网络概述3-加载网络模型与设置3.1 所需的模型下载3.2 所使用的模型&#xff08;googlenet&#xff09;3.3 Net介绍3.4 代码输出网络结构信息3.5 计算后台设置3.6 所有代码 4-图像分类网络inception的使用5-读取分类标…

计算机毕业设计选题推荐-医疗就诊平台-在线医疗问诊系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

HTTP 状态码:解析与处理的全面指南

一、HTTP 状态码概述 HTTP 状态码&#xff08;HTTP Status Code&#xff09;是用以表示网页服务器 HTTP 响应状态的 3 位数字代码。它在客户端与服务器之间的通信中起着至关重要的作用。 其主要作用在于向客户端清晰准确地传达服务器对请求的处理结果。例如&#xff0c;当客户…

3种明星代言推广绝招,快速提升品牌曝光!

品牌曝光是现代商业发展中非常重要的一环&#xff0c;而明星代言则是提高品牌曝光的有效手段之一。本文将介绍三种科学有效的明星代言推广绝招&#xff0c;以帮助品牌快速提升曝光度。 1. 明星代言的概念 在现代娱乐圈中&#xff0c;明星代言成为了品牌推广的热门方式之一。明…

Zotero打开后所有文献及笔记都消失了

1 问题描述&#xff1a; 打开文献管理工具zotero之后&#xff0c;之前看过的所有文献都丢失了&#xff0c;还提示找不到路径&#xff0c;是否采用默认C盘的zotero数据目录 若点击了“使用新位置”&#xff0c;则打开的界面里也完全没有自己曾经看过的论文与笔记了。 如下图所示…

游戏开发设计模式之外观模式

目录 外观模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在游戏引擎设计中实现外观模式以提高系统的可扩展性&#xff1f; 外观模式与其他设计模式&#xff08;如适配器模式、代理模式&#xff09;相比&#xff0c;有哪些独特的优势和潜在的局限性&#xff1f; 独…

string的模拟实现与深浅拷贝

在上一章中可以看见&#xff0c;string类函数的基本实现和用法&#xff0c;在本文。来用基础的语言来模拟实现string类&#xff0c;来了解一下他们的基础底层&#xff1b; 在VS中string&#xff0c;我们可以看见&#xff0c;实现VS的类成员很多&#xff0c;很麻烦&#xff1b; …

AI写作|AI底层方法论第三节-AI常用的格式(作用+案例)

本文背景: hello大家好我是大象&#xff0c;直接接上文&#xff0c;这一篇我们讲AI的常用格式&#xff0c;这一节也是基础课中非常重要的一个内容&#xff0c;有了正确的格式不仅能输出我们想要的文章内容&#xff08;按格式&#xff09;让AI清楚的知道,哪些是要求,哪些是任务。…

CSS系列之浮动清除clear(三)

一、为什么需要清除浮动 浮动的原理是让元素脱离文档流&#xff0c;直接浮在桌面上。使用浮动后续添加内容布局可能会产生布局混乱&#xff0c;造成高度坍塌&#xff0c;这时候就可以利用清除浮动来解决父元素高度塌陷的问题。 <!DOCTYPE html> <html lang"en&q…

K8S对接Ceph分布式存储

文章目录 一、Ceph理论知识1、Ceph简介2、Ceph分布式存储的优点3、Ceph核心组件 二、部署Ceph高可用集群1、服务器环境信息2、部署前环境准备工作3、部署Ceph监控服务Monitor4、激活Ceph存储服务OSD 三、K8S对接Ceph存储1、K8S对接Ceph RBD实现数据持久化2、基于Ceph RBD生成PV…

脚本加密解密

shell脚本是维护Linux系统的一个必不可少的工具&#xff0c;简单、便捷、可以执行强。 但是shell脚本内会存储一些隐私信息&#xff08;如系统账号、密码&#xff0c;应用程序账号、密码&#xff0c;IP&#xff0c;数据存放路径等等&#xff09;&#xff0c;以明文的形式存放&…

报表融合大屏,做不一样的财务分析!

冷冰冰的数据如何让人眼前一亮&#xff1f; 千篇一律的表格如何让数据可视化&#xff1f; ...... 赶快丢掉那些传统的表格工具吧&#xff01;&#xff01;&#xff01;现在我们都用更智能的工具来做报表了&#xff01; 财务报表是什么&#xff1f; 财务报表是企业财务状况、…

深度学习-OpenCV运用(1)

文章目录 一、OpenCV介绍二、OpenCV运用1.读取保存图片2.读取视频3.图像切片 一、OpenCV介绍 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它主要用于实时的图像处理和计算机视觉任务。虽然OpenCV本…