一、学习内容
-
C++绪论
C++是C语言的拓充,C++包含C的所有属性,换一句话说,C语言的语法在C++中都合法。 C语言是面向过程的编程思想。 C++语言是面向对象的编程思想。(半面向对象,半面向过程) 可以说在C++中一切皆对象。 C++的三大属性:封装、继承、多态 -
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>
-
-
C++的第一条语句
-
cout
cout是输出类的类对象,具有输出功能,可以自动识别数据类型,无需加格式符。
<< 插入符 (输出符) endl 换行 (等价于 '\n') -
#include <iostream>
-
# 预处理
-
include 包含包括
-
<iostream> //标准的输入输出流
-
istream 输入流 ostream 输出流
-
-
using namespace std;
-
using 使用命名空间的关键字
-
namespace 命名空间的关键字
-
std 标准的
-
-
cin
cin是输出类的类对象,具有输入功能,可以自动识别数据类型,无需加格式符。
>> 提取符 (输入符) 无需加&符
-
-
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
-
-
-
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'初始化
-
-
-
脑图
二、作业
作业:
完成字符串比较的场景
如果登录失败,提示用户登录失败信息,并且提示错误几次,且重新输入
如果输入错误三次,则退出系统
代码解答:
#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 的核心内容,掌握容器、算法和迭代器的使用。