(萌新笔记)C++的复习笔记

初始时间:大一(上) 12月

更新时间:大一(上) 12月

简介:之前我写过一篇博客(萌新笔记)C++与C的不同,本来我想接着这个系列继续写下去,但是我发现越到后面C和C++的区别越显著,所以我就打算单独出一个系列的C++的复习笔记,但如果碰到与C语言相关的知识点我也会写出来

start!☆(๑>ڡ<)☆

一、大杂烩(这里的笔记都是混杂的

1、C语言学指针的时候我们将未初始化的指针变量指向空指针NULL,而C++表示空指针有三种方式(三种方式都是等价的)

int *p = NULL;
int *p = 0;
int *p = nullptr;

2、初始化变量(以int为例介绍四种方法)

int temp = 0;
int	temp = {0};
int temp{0};
int temp(0);

补充:在C++11的标准中,用花括号来初始化变量仅在某些受限场合才能使用,这就涉及到列表初始化(挖个坑,以后学到了在补充)

3、在C++11标准中,int a[5] = {} 和 int a[5] {} 都代表数组初始化为0

4、C++的布尔类型(_Bool)为 true 和 false,python的布尔类型(bool)为 True 和 False

二、标准库类型 string

前提要示:C++的 string类 和 C语言的<string.h>半点关系也没有,标准库类型 string 表示可变长的字符串,而<string.h>是旧C 的头文件,对应的是基于char*的字符串处理函数,所以 string类 并非<string.h>的“升级版本”,他们是毫无关系的两个头文件,而C++的< cstring >才是对应于旧C <string.h>的std 版本 详细说明点击此

1、初始化 string 对象

常用方式

string val;           //默认初始化,val是空字符
string val2 = val;	   //val2也是空字符
string val3 = "well";  //val3的内容与该字面值一样
string val4(5,'c')	   //内容是"ccccc"

特殊用法

string val3 = "well";
string val6(val3);   //val3的内容是"well"
string val7("well"); //val7的内容也是"well"

顺便一提

string val3 = "well";
val3 = "Allright";   //当声明完 string类后要改定义的话可以直接改

2、打印 string 对象

One、普通打印

string val = "   Hello World   "
cout<< val <<endl;

output:Hello

原因:在打印操作时, string 对象会自动跳过开头的空白(包括空格符、换行符、 Tab键等)并从第一个字符读起,直到遇到下一处空白为止

Two、使用getline读取一整行

string line;
while (getline(cin,line))//每次读一整行直到文件末尾
	cout<< line << endl;
return 0;

解析:用getline的好处是遇到空白不会停止,直到换行符才停止读取,并且得到的line实际上是不包含换行符的

3、string::size_type类型

size()函数返回是string::size_type类型的值,string::size_type它是一个无符号类型的值,而且能够存放下任何string对象的大小。另外,string类型的索引也是一个size_type类型的(如:下标运算符 [ ] 索引的就是string::size_type类型)

还有:虽然书上说不要把string::size_type类型和unsigned型与int型混杂,但我觉得还是可以把string::size_type类型简单的理解为:无穷大的unsigned型

4、比较 string 对象(雾

标题是什么意思呢?雾就是误,即误导的意思,其实我真正想表达的是:在C\C++中比较两个字符串或string对象是否相等

先建议大家看一下c\c++中比较两个字符串或string对象是否相等(一定要看哦!)

然后我针对这篇文章做个概述:

One、如果要比较的对象是char*字符串,且用 “==” 符号比较,那么比较的是两个字符串的地址是否相等(相等是1,不等是0

Two、如果要比较的对象是char*字符串,且利用strcmp()函数比较,那么比较的是两个字符串的ASCII码(相等是0,不等是1

Three、 如果要比较的对象是两个string,且利用compare()函数比较,那么比较的是两个字符串的ASCII码相等是1,不等是0

Four、 如果要比较的对象是两个string且用 “==” 符号比较,那么比较的是两个字符串的ASCII码相等是0,不等是1

5、string 对象相加

可以两个 string对象 相加,也可以把 string对象 和字符串字面值混加,但对于第二种情况有个前提:必须确保每个加分运算符(+)的两侧的运算对象至少有一个是 string

举例

string val1 = "123";
string val2 = "456";
string val3 = val1 + "789" + val2 //正确
string val4 = "789" + val1 + "789" //错误
string val5 = (val1 + "789") + "789" //正确,因为括号内相加后是string

6、基于范围的for语句

举例

int main()
{
	string str("some");
	for (auto c : str)//每行输出str的一个字符
		cout << c << endl;
	return 0;
}

output:s
	   o
	   m
	   e
发布了92 篇原创文章 · 获赞 35 · 访问量 6384

猜你喜欢

转载自blog.csdn.net/CourserLi/article/details/102764607