C++(Day35)

一、学习内容

  1. C++绪论

    C++是C语言的拓充,C++包含C的所有属性,换一句话说,C语言的语法在C++中都合法。 C语言是面向过程的编程思想。 C++语言是面向对象的编程思想。(半面向对象,半面向过程) 可以说在C++中一切皆对象。 C++的三大属性:封装、继承、多态
  2. C++对C的兼容

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

    • C++语言文件: XXX.cpp
      编译C++语言文件 : g++ XXX.cpp / g++ XXX.cpp -o

    •  头文件 (声明 宏定义,函数的声明,类型的声明)
      C语言 (一般以.h结尾)eg: #include<stdio.h>
      C++ (一般不以.h结尾) eg: #include<iostream>

  3. C++的第一条语句

    • cout

      cout是输出类的类对象,具有输出功能,可以自动识别数据类型,无需加格式符。
      << 插入符 (输出符) endl 换行 (等价于 '\n')
    • #include <iostream>

      • # 预处理

      • include 包含包括

      • <iostream> //标准的输入输出流

      • istream 输入流 ostream 输出流

    • using namespace std;

      • using 使用命名空间的关键字

      • namespace 命名空间的关键字

      • std 标准的

    • cin

      cin是输出类的类对象,具有输入功能,可以自动识别数据类型,无需加格式符。
      >> 提取符 (输入符) 无需加&符
  4. C++中的数据类型

    基本数据类型:char 、short、int 、float、double、long、bool、string 构造数据类型:数组、指针、结构体、共用体、枚举、类
    • 浮点型

      • 保留有效位数6位,并且存在四舍五入

      • 如果想改变保留有效位数,则需要一个方法(函数),该函数需要包含一个头文件 #include<iomanip>

        cout << setprecision(4) << c << endl;
      • 保留小数点后几位

        cout << setprecision(3) << fixed << c2 << endl;
    • 在C++中一旦改变了输出规则,则后续都以这种规则输出

      • 以十六进制的方式输出

        cout << hex << b << endl
      • 以八进制的方式输出

        cout << oct << b << endl
      • 以十进制的方式输出

        cout << dec << b << endl
  5. C++中字符串类型string

    在c语言中是没有字符串类型的变量,借助于字符数组存放字符串。 在C++中有字符串类型的变量 , string
    • 字符串的输入

      getline(cin, name); 包含空格
      cin >> name 以空格为结束
    • 字符串的比较

      由于C++有字符串类型的变量,所以字符串之间的比较,就可以直接使用关系运算符进行比较。
    • 字符串的元素访问

      •  下标 ----------->不判断是否越界

      • at() ------------>判断是否越界

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

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

        str = a; 通过赋值c风格的字符串可以直接转换成C++
      • C++风格的字符串不可以直接转换成C风格的字符串,需要借助c_str()转换。

        strcpy(a, str.c_str()); C++风格字符串需要借助于c_str()进行转换
    • 字符串中常用的函数

      • empty() //判断字符串是否为空,为空true 非空 false

      • size() //计算字符中元素的个数

      • capacity() //计算字符串的容量

    • 字符串类型的初始化和赋值

      • string str2 = "hello";

      • string str3 = str2;

      • string str4(str3); 调用了拷贝构造函数

      • string str5(str1, 3);用str1从下标为3的位置初始化给str

      • string str6(8,'z');初始化 用8个'z'初始化

  6. 脑图

二、作业

作业:

完成字符串比较的场景
如果登录失败,提示用户登录失败信息,并且提示错误几次,且重新输入
如果输入错误三次,则退出系统

代码解答:

#include <iostream>using namespace std;int main()
{//string str= "hello world";//cout << str[4] << endl;//cout << str[12] << endl;//cout << str.at(4) <<endl;//cout << str.at(12) << endl;string name;string password;string username="admin";string userpassword="123456";int count =0;while (1) {if(count ==3){return -1;}cout << "请输入你的账号" << endl;cin >> name;cout << "请输入你的密码" << endl;cin >> password;if(name == username && password == userpassword){cout << "登录成功!" << endl;break;}else if(name == username && password != userpassword){count ++;cout << "密码错误"<<count << "次,请重新输入"<< endl;}else if(name != username && password == userpassword){count ++;cout << "账号错误"<<count << "次,请重新输入"<< endl;}else if(name != username && password != userpassword){count ++;cout << "账号密码都错误"<<count << "次,请重新输入"<< endl;}}return 0;
}

成果展示: 

三、拓展

学习方向:

1. C++基础语法与特性:

掌握 C++ 中对 C 的扩展和兼容性。
学习 C++ 的核心特性:面向对象编程,包括封装、继承、多态。

2. 标准库的使用:

掌握 C++ 输入输出流 (`cin`, `cout`) 的基本用法。
熟悉 C++ 的 `string` 类型及其操作。

3. C++高级特性:

深入理解命名空间(`namespace`)及其作用。
学习标准模板库(STL),包括容器(如 `vector`)、算法(如 `sort`)和迭代器的基本用法。

学习重点:

1. C++对C的兼容性:

理解 C++ 能够兼容 C 代码的原因,掌握 C++ 的文件扩展名和编译方式。
熟悉 C 与 C++ 中头文件和输入输出的区别。

2. C++的三大特性(面向对象):

封装:学习如何定义类和对象,理解访问权限(`private`, `protected`, `public`)。
继承:掌握继承的语法、构造函数和析构函数的执行顺序。
多态:理解虚函数(`virtual`)、纯虚函数和接口的用法,学习如何实现运行时多态。

3.输入输出流与格式化输出:

掌握 `cin` 和 `cout` 的用法,理解提取符和插入符的作用。
学习如何使用 `<iomanip>` 进行格式化输出(如控制小数点位数、进制转换)。

4. C++的字符串操作:

理解 C++ 和 C 风格字符串的区别。
掌握字符串的初始化、赋值、比较和常用函数(如 `empty()`, `size()` 等)。
熟悉字符串间的互相转换(`c_str()` 和 `strcpy`)。

学习方法:

1. 理论结合实践:

分模块练习:将每个知识点分解成小练习。例如,编写一个程序分别实现字符串的初始化和比较,练习 STL 的基本操作。
复现示例代码:逐行编写并理解 C++ 中的示例代码,如面向对象的封装、继承、多态特性。

2.实战项目驱动学习:

基础项目:如实现一个简单的银行账户管理系统(包含类的封装、继承和多态)。
进阶项目:如编写一个小型文本处理工具,包含文件读写和字符串操作。

3. 深入阅读与对比:

阅读 C 和 C++ 代码示例,比较两者的输入输出、字符串操作和封装实现的差异。
学习 C++ 的标准库文档,了解不同函数的用法和特性。

4. 问题驱动学习:

提出问题并尝试解决,如“如何用 C++ 的 STL 容器替代传统的数组操作?”、“如何通过多态实现运行时的行为改变?”。

5. 学习进阶路线:

学习 C++ 的异常处理(`try`, `catch`, `throw`)。
了解模板编程(泛型函数和类)。
学习 STL 的核心内容,掌握容器、算法和迭代器的使用。

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

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

相关文章

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!

作者&#xff1a;来自 Elastic Panagiotis Bailis Elasticsearch 检索器经过了重大改进&#xff0c;现在可供所有人使用。了解其架构和用例。 在这篇博文中&#xff0c;我们将再次深入探讨检索器&#xff08;retrievers&#xff09;。我们已经在之前的博文中讨论过它们&#xf…

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们&#xff0c;上一期的保留小数位数教学够用一辈子&#xff0c;有不错的点赞量&#xff0c;可我连一个粉丝铁粉都没有&#xff0c;你愿意做我的第一个铁粉吗&#xff1f;OK废话不多说&#xff0c;开始&#xff01; 温故与知心 可能你也学过&#xff0c;且是工作者…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面&#xff0c;等待几分钟&#xff0c;即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份&#xff08;密码&#xff1a;devuser…

本地 / 网络多绑定用例总结

原文连接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;4&#xff09; 情景设定 在前一节的基础上&#xff0c;假设有类似情景&#xff0c;区别在于服务实例 2 位于与 AP 产品相同以太网的不同 ECU 上&#xff0c;服务消费者及其代理驻留在 AP 产品 ECU 上。因以太网…

Android笔记(三十六):封装一个Matrix从顶部/底部对齐的ImageView

背景 ImageView的scaleType默认显示图片是这样&#xff0c;但是有时候设计稿需求希望图片左右能紧贴着ImageView左右边缘&#xff0c;又不破坏图片的比例&#xff0c;用自带的matrix&#xff0c;centerCrop等都可以满足 但是都会造成图片的某些区域被裁剪了&#xff0c;如果设…

什么是项目完整性管理?

项目完整性管理是一种在项目生命周期中确保项目质量、进度、成本、资源等各方面保持一致性与协调性的系统性方法。它不仅涉及项目的规划与执行&#xff0c;还包括对项目中的各项资源、流程、技术的整合和控制&#xff0c;以保障项目的最终交付质量和效果。随着项目复杂性的提升…

【3D Slicer】的小白入门使用指南四

开源解剖影像浏览工具Open Anatomy Browser使用及介绍 和3D slicer米有太大关系,该工具是网页版影像数据的浏览工具(可以简单理解为网页版的3D slicer) 介绍 ● 开放解剖(OA)浏览器是由神经影像分析中心开发的,基于网络浏览器技术构建的图谱查看器。 ● OA浏览器将解剖模…

如何优化Kafka消费者的性能

要优化 Kafka 消费者性能&#xff0c;你可以考虑以下策略&#xff1a; 并行消费&#xff1a;通过增加消费者组中的消费者数量来并行处理更多的消息&#xff0c;从而提升消费速度。 批量消费&#xff1a;配置 fetch.min.bytes 和 fetch.max.wait.ms 参数来控制批量消费的大小和…

论文 | On Second Thought, Let’s Not Think Step by Step!

概述与研究背景 本文探讨了“零样本链式思维”&#xff08;Zero-shot Chain of Thought, CoT&#xff09;在大语言模型&#xff08;LLM&#xff09;中的应用及其潜在的偏见与有害内容生成风险。论文指出&#xff0c;尽管CoT在多种逻辑推理任务中提高了模型的表现&#xff0c;但…

华为云前台展示公网访问需要购买EIP,EIP流量走向

华为云前台网络&#xff08;VPC,安全组&#xff0c;EIP&#xff09; 1.EIP网段是从哪里划分的&#xff1f; 管理员在后台Service_OM已设置 Service_OM-网络资源-外部网络-创建外部网络基本信息&#xff1a;配置参数&#xff1a;*名称 public*网络类型 LOCAL 不带标签 类似开…

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明 文章目录 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明前言1. Ribbon 介绍1.1 LB(Load Balance 负载均衡) 2. Ribbon 原理2.2 Ribbon 机制 3. Spring Cloud Ribbon 实现负载均衡算法-应用实例4. 总结&#x…

apk反编译修改教程系列-----apk应用反编译中AndroidManifest.xml详细代码释义解析 包含各种权限 代码含义【二】

💝💝💝💝在上期博文中解析了一个常规apk中 AndroidManifest.xml的权限以及代码。应粉丝需求。这次解析一个权限较高的apk。这款apk是一个家长管控的应用。需求的各种权限较高。而且通过管控端可以设置控制端的app隐藏与否。 通过博文了解💝💝💝💝 1💝💝…

如何修改npm包

前言 开发中遇到一个问题&#xff0c;配置 Element Plus 自定义主题时&#xff0c;添加了 ElementPlusResolver({ importStyle: "sass" }) 后&#xff0c;控制台出现报错&#xff0c;这是因为 Dart Sass 2.0 不再支持使用 !global 来声明新变量&#xff0c;虽然当前…

神经网络与Transformer详解

一、模型就是一个数学公式 模型可以描述为:给定一组输入数据,经过一系列数学公式计算后,输出n个概率,分别代表该用户对话属于某分类的概率。 图中 a, b 就是模型的参数,a决定斜率,b决定截距。 二、神经网络的公式结构 举例:MNIST包含了70,000张手写数字的图像,其中…

谷歌Gemini发布iOS版App,live语音聊天免费用!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

【Java基础知识系列】之Java类的初始化顺序

前言 类的初始化顺序 简单场景 代码示例 public class Person {private String name initName();private String initName() {System.out.println("【父类】初始化实例变量name");return "【父类】史蒂夫";}private int age;private static int staticVa…

鸿蒙 管理应用拥有的状态有Localstorage、Appstorage、PersistentStorage、Environment、用户首选项、持久化方案。

LocalStorage&#xff1a; LocalStorage是页面级UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。支持UIAbility实例内多个页面间状态共享。 // 存储数据 localStorage.setItem(key, value); // 获取数据 const value localStorage…

关系型数据库和非关系型数据库详解

文章目录 关系型数据库和非关系型数据库详解一、引言二、关系型数据库1、关系型数据库简介1.1、SQL语言 2、关系型数据库的实际应用3、关系型数据库的优点4、关系型数据库的缺点 三、非关系型数据库1、非关系型数据库简介1.1、灵活性示例 2、非关系型数据库的分类3、非关系型数…

jvm调优方式

1. 堆内存调优&#xff1a; • 堆大小调整&#xff1a;通过-Xms和-Xmx参数设置堆内存的初始大小和最大大小&#xff0c;确保 JVM 在启动时有足够的内存&#xff0c;并在需要时能够扩展到最大内存。 • 堆分区&#xff1a;使用-XX:NewSize和-XX:MaxNewSize调整新生代&#xff08…