C++和QT

 

什么是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个mcout << "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.mzph.cn/pingmian/52692.shtml

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

相关文章

pandas操作Excel文件

pandas操作Excel文件 一、前言二、指定读取的工作表与header设置2.1指定工作表2.2header设置 三、读取Excel数据3.1iloc读取数据3.2read_excel读取数据3.3loc读取数据 四、DataFrame数据筛选4.1根据列标签对整列进行筛选4.2使用iloc对区域进行筛选4.3自定义筛选 五、DataFrame类…

Kafka 之 KRaft —— 配置、存储工具、部署注意事项、缺失的特性

目录 一. 前言 二. 配置&#xff08;Configuration&#xff09; 2.1. 处理者角色&#xff08;Process Roles&#xff09; 2.2. 控制器&#xff08;controller&#xff09; 2.3. 存储工具&#xff08;Storage Tool&#xff09; 2.4. 调试&#xff08;Debugging&#xff09…

Datawhale X 李宏毅苹果书 AI夏令营 入门笔记

文章目录 前言Task01 通过案例了解机器学习1.1机器学习的浅显介绍1.2机器学习模型的构建1.3一些感悟 第一章 前言 本文依托datawhale夏令营撰写的学习笔记&#xff0c;教程链接 期待大家的交流指正 Task01 通过案例了解机器学习 1.1机器学习的浅显介绍 机器学习就是让机器具…

Claude 与 ChatGPT:哪个更适合学术写作,深入对比分析

人工智能写作助手已成为学者、研究人员和学生的强大资源。Anthropic 的 Claude 和 OpenAI 的 ChatGPT 是该领域的两大主要参与者。随着这些人工智能工具的不断发展和改进&#xff0c;越来越多的学者面临着选择使用哪种助手来完成工作的困境。 Claude 和 ChatGPT 在应用于学术工…

第十四章 rust集合库介绍

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust集合库介绍 目录 注意一、前言二、map三、list四、set五、deque一、前言 基本的数据结构各种语言都会有自己的实现,rust也不例外。 在rust中,这些数据结构的实现被称作“集合”,被放置在了std::colections…

【GPT】Coze使用开放平台接口-【6】Dify 也来一遍

前面讲了 coze 的相关用法&#xff0c;这边想着用 Dify 也来一遍&#xff0c;刚开始的时候接触的是 Dify&#xff0c;后面才是 coze。Dify 和 coze 的侧重点不同&#xff0c;我个人是更倾向用 Dify 构建工作流就可以了&#xff0c;coze 还是相对全能。 本节用 Dify 也会创建插…

Linux文件IO缓存

一、缓冲区大小对 I/O 系统调用性能的影响 总之&#xff0c;如果与文件发生大量的数据传输&#xff0c;通过采用大块空间缓冲数据&#xff0c;以及执行更少的 系统调用&#xff0c;可以极大地提高 I / O 性能 二、stdio 库的缓冲 当操作磁盘文件时&#xff0c;缓冲大块数据以…

集成电路学习:什么是BOM材料清单

BOM&#xff1a;材料清单 BOM是物料清单&#xff08;Bill of Material&#xff09;的缩写&#xff0c;也称为产品结构表或产品结构树。BOM是通过计算机辅助企业生产管理&#xff0c;使计算机能够识别企业所制造的产品构成和所有要涉及的物料。以下是对BOM的详细解释&#xff1a…

智能合约漏洞(一)

前言 智能合约在区块链技术中发挥着重要作用&#xff0c;但其复杂性和安全性问题也常常引发关注。本系列文章将深入探讨几种常见的智能合约漏洞&#xff0c;帮助开发者更好地理解和防范这些安全风险。本文基于 https://dasp.co/ 网站的内容和其他相关资料&#xff0c;分析智能…

IaaS、PaaS、SaaS是什么;算力共享商业模式;吸纳零散算力,提供高价值网络连接,促使算力流通; 以SRv6 SID为抓手,构建算网SaaS生态运营体系

目录 IaaS、PaaS、SaaS是什么 1. IaaS(基础设施即服务) 2. PaaS(平台即服务) 3. SaaS(软件即服务) 算力共享商业模式 云网融合,助力“东数西算”工程 吸纳零散算力,提供高价值网络连接,促使算力流通 以SRv6 SID为抓手,构建算网SaaS生态运营体系 IaaS、PaaS、S…

ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…

Hreflang 和 SEO:新手完整指南

每天&#xff0c;数以百万计的法国用户访问像 Amazon.com 这样的全球网站。虽然 Amazon.com 的官方页面是英文的&#xff0c;但用户仍然可以看到法语的文本和产品描述。这是因为亚马逊的全球网站有针对法国的本地化版本&#xff0c;确保所有法国用户都可以自动看到法语的网站内…

五种多目标优化算法(NSGA3、MOPSO、MOGWO、NGSA2、SPEA2)性能对比,包含47个多目标测试函数,6种评价指标,MATLAB代码

一、五种多目标算法及六种评价指标简介 多目标灰狼优化算法&#xff08;MOGWO&#xff09;&#xff1a; MOGWO是由Mirjalili等人在2016年提出的&#xff0c;基于灰狼优化算法&#xff08;GWO&#xff09;的多目标版本。它引入了存档机制和改进的头狼选择方式&#xff0c;以处理…

uniapp(微信小程序如何使用单选框、复选框)

一、先看效果 二、数据结构 说明&#xff1a;selected用来记录每次用户选择的值&#xff0c;当是单选的时候属性中的selected属性需要设置成字符串&#xff0c;当是复选框的时候&#xff0c;此时选择的是数组&#xff0c;selected属性应设置为数组。type用来区分当前是单选还是…

【C++ Qt day3】

2、设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。

PTA L1-027 出租

L1-027 出租&#xff08;20分&#xff09; 下面是新浪微博上曾经很火的一张图&#xff1a; 一时间网上一片求救声&#xff0c;急问这个怎么破。其实这段代码很简单&#xff0c;index数组就是arr数组的下标&#xff0c;index[0]2 对应 arr[2]1&#xff0c;index[1]0 对应 arr[0…

权威DNS服务器

权威DNS服务器&#xff08;Authoritative DNS Server&#xff09;是指对特定域名&#xff08;如example.com&#xff09;及其下属子域名&#xff08;如sub.example.com&#xff09;的DNS查询提供权威答案的服务器。这意味着&#xff0c;当你想要知道某个特定域名的IP地址时&…

Java的IO模型详解-BIO,NIO,AIO

一、BIO相关知识 Java 的 BIO (Blocking I/O) 模型是基于传统的同步阻塞 I/O 操作。在这种模型中&#xff0c;每个客户端连接都需要一个独立的线程来处理请求。当线程正在执行 I/O 操作时&#xff08;如读取或写入&#xff09;&#xff0c;它会被阻塞&#xff0c;直到操作完成…

【读点论文】Scene Text Detection and Recognition: The Deep Learning Era

Scene Text Detection and Recognition: The Deep Learning Era Abstract 随着深度学习的兴起和发展&#xff0c;计算机视觉发生了巨大的变革和重塑。场景文本检测与识别作为计算机视觉领域的一个重要研究领域&#xff0c;不可避免地受到了这波革命的影响&#xff0c;从而进入…

Golang | Leetcode Golang题解之第376摆动序列

题目&#xff1a; 题解&#xff1a; int wiggleMaxLength(int* nums, int numsSize) {if (numsSize < 2) {return numsSize;}int prevdiff nums[1] - nums[0];int ret prevdiff ! 0 ? 2 : 1;for (int i 2; i < numsSize; i) {int diff nums[i] - nums[i - 1];if ((…