Introduction⚓︎
约 1023 个字 46 行代码 预计阅读时间 6 分钟
背景知识
-
回顾 C 语言:
- 优势:
- 高效编程
- 能直接访问机器,适用于 OS 和 ES(end system)
- 灵活
- 劣势:
- 不充分的类型检查
- 缺乏对大规模编程的支持
- 面向过程编程 (procedure-oriented programming)
- 优势:
-
C++ 之父——Bjarne Stroustrup,他的个人网站
- C++ 的目标:支持面向对象编程(来自 SmallTalk
) ,并结合 C 语言的灵活性和高效性 - C++ 的提升之处:数据抽象、访问控制、初始化和清除 (cleanup)、引用、函数重载、I/O 流、名称控制、运算符重载、更加安全和强大的内存管理、模板、异常处理 ...
- C++ 是一种混合语言,支持各种编程范式 (programming paradigm),包括
- 面向过程编程 (procedure-oriented programming)
- 面向对象编程 (object-oriented programming, OOP)
- 泛型编程 (generic programming)
The First C++ Program⚓︎
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter a decimal number: ";
cin >> number;
cout << "The number you entered is " << number << endl;
return 0;
}
解释
- C++ 的头文件不用
.h
后缀,且头文件的名称由小写字母构成 cin
和cout
分别表示标准输入流和标准输出流- 它们都支持连续输入 / 输出多个值
- 注意:
cin
无法读取空白字符(包括空格、换行、制表符等)
- 方便起见,源程序开头加一句
using namespace std
,表示使用标准名称空间。如果没有这句的话,后面的cin
、cout
和endl
都要加上std::
前缀,否则无法编译 <<
和>>
分别表示插入符 (insertor) 和提取符 (extractor),并分别适用于cout
和cin
endl
:换行,意为 end of line
在 C++ 中,任意类型的变量存放的都是一个对象 (object)。
Strings⚓︎
- C++ 中,字符串有专门的类,叫作
string
- 在 C++ 中,强烈建议使用
string
类表示字符串,因为它是真正的字符串类型。而在 C 语言中实际上没有字符串类型,只是用字符数组和字符指针来模拟字符串,而且后者不太安全 - C++ 字符串末尾没有
\0
字符。事实上,除了 C 语言外,其他语言都是将字符串本身及其长度存在内存中,因此不用\0
标记结尾
- 在 C++ 中,强烈建议使用
- 使用
string
类时,必须在代码开头加上#include <string>
- 定义字符串变量:
string str;
-
使用字符串字面量初始化的三种方式:
其中前两种方式是等价的,且这两种方式适用于其他类型(比如
int
等) -
赋值:
-
输入和输出
-
可以直接用
cin
/cout
读写 -
读取一整行字符串:
getline(cin, line_var)
注意
如果
cin
之后用到getline
,由于cin
忽略空白字符,输入流里可能还有未被读取的换行符,而getline
将会读取一行字符串,直到遇到换行符。所以在使用getline
前,应当先用cin.get()
读取换行符(这个函数的功能是读取单个字符) ,然后再用getline
。 -
-
获取字符串的单个字符:可以像字符数组一样访问字符串
-
字符串拼接 (concatenation)
-
获取长度:
s.length();
- 在 C 中,
.
运算符用于检索结构体内的成员 - 而在 C++ 中,它又是作为一个检索对象成员的运算符
小技巧
如果 vscode 中下载了 C/C++ 插件,那么编写代码时在对象后敲个
.
后,vscode 就会显示该对象可用的所有成员。 - 在 C 中,
-
创建字符串(使用构造函数)
-
获取子字符串:
substr(int pos, int len);
-
改变字符串:
-
寻找字符串
- 该函数会返回找到的指定字符串首字符在原字符串中的索引,如果未找到,则返回 -1
注
从子字符串开始的所有函数(更确切的说法是“方法”)都是字符串对象的成员,因此实际使用时要用 .
运算符访问:
Pointers⚓︎
-
指向对象的指针
-
指针运算符
&
:获取地址(ps = &s;
)*
:获取对象((*ps).length()
)->
:调用函数(ps->length()
)
-
对象和指针在声明时的区别
string s;
:此时对象s
被创建并被初始化string *ps;
:此时对象ps
还不清楚指向何处
-
赋值
评论区
如果大家有什么问题或想法,欢迎在下方留言~