Study Experience (暑假篇 4)
也是好久没有更新了,现在把电脑搬到寝室了,最近一就不在状态,这一篇不写C语言的算法题了,这一篇记录一下我 c 转 c++ 的一些知识点,也希望对一些 c 转 c++ 的朋友们有一些帮助,因为我也看了很多关于 c++ 的网课,但是很少有 c 转 c++ 的网课,且大部分类型的都比较拖延,对于我这种花很多时间学习了C语言的我并不想从头去学 c++ ,因为我觉得这两种语言有太多互通性,既然学了C语言就不需要再去重头学习 c++ 了。所以这一篇也算是我对我初学 c++ 的一个心得与知识总结,我现在唯一觉得学习效率比较高的博主是b站上的别喷我id,这就是博主的名字噢。
现在是你曾经空中的未来
不论怎么说,再颓废,也要坚持做下去,即使学的很少很慢但至少比不学、荒废时间要好很多。 那我也从 c++ 的最开始去讲吧。
1.关于头文件差别
#include <iostream> using namespace std; int main() { 略; }#include <iostream> 就是 c++ 的头文件,跟C语言的 #include<stdio.h> 差不多一个概念,底下的也差不多,只需要记下这两段代码就可以开始使用 c++ 的一些基础编程。而C语言和 c++ 一样都是用 int main() 的,这里就不过多解释了。
当你想使用一些关于字符或排序等等的库函数时,你需要添加一些别的头文件。例如:
#include <cstring> //与C语言中的 #include <string.h> 一样 #include <cmath> //同上 #include <queque> //学过数据结构的就知道queque是队列 #include <vector> //略 ...................也就是说 c++ 中的很多头文件都与C语言中的很多头文件以及所学知识密不可分。
当然学到后面我们就可以知道头文件可以使用如下的方法:
#include<bits/stdc++.h> using namespace std;这样就不用写这么多头文件了,直接一个头文件就可以覆盖很多了,对于新手还是很友好的。
2.关于输入输出
这算是我刚接触C语言第一个任务了,就是输出 hello world 所以在此重温经典,使用 c++ 输出。c++ 的输出与C语言不同,cout是专属于 c++ 的输出方式,当然你要是想你也可以使用 printf 因为 cout 似乎也并不是很好,但是毕竟是 c++ 的一个特性,所以还是要了解的,cout 这个也很好记,在我看来就是把 cout 拆分一下就好了,c 单独出列代表的意思就是是 c++ 吧或者说是 c 类型的语言,而 out 就是 “出” 的意思呗,然后再接下来添加两个箭头 << 就行了,这个就是要记住的。我觉得只要有些英文常识就很好理解记住了。代码如下:
#include <bits/stdc++.h> using namespace std; int main() { cout << "hello world"; return 0; }接下来是 c++ 完整的输入输出,cin 的理解方式也是同 cout 一样,但是我们会发现上面的输出内容使用了冒号,但这里没有,没错,当我们输出一个变量的时候我们就不能使用冒号框住了,简单理解就是当我们像输出一个可以改变的东西是不能用冒号的,当我们只想输出一段固定的文字时就需要冒号。还需要注意的就是 cin 后面接的两个箭头是 >> 这样的(往左的)与 cout 不同。最为万众瞩目的就是 endl 了,看着很陌生是吗,其实就是C语言中的换行符 \n ,不是数字 1 噢,是字母 l 噢。
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; cout << n <<endl; return 0; }那么还有一件事,就是要是想连续输入输出的话要怎么办呢,所以我们要将不同的 “量” 分开,例如:
#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; cout << n << endl << m; return 0; }这里就不多说了,反正就是两个箭头只能输出或输入一个“量”就对了。那 c++ 的输入输出就到这里了。
3.bool变量 const定义
我相信学习C语言较久的话,对这两个东西应该都不陌生,只是可能用处并不多,也并不是很复杂很牛逼的一个知识点,所以我也就随便穿插一下。
先从 bool 开始说,很简单,它其实就可以理解为一个 只能赋值0 和非 0 值的定义类型(就像 int double 一样,都是可以给它定义的变量赋值的),通俗点就是它的作用是判断真和假。代码如下:
#include <bits/stdc++.h> using namespace std; int main() { bool a=true; bool b=-1; bool c=0; cout << a << " " << b << " " << c << endl; return 0; }编译后的结果就是 1 1 0,这里也不做过多解释。
来看看 const 的用法,用于声明常量或不可修改的实体,其核心作用是保护数据不被意外修改,看文字也许看不懂,那就看代码:
const int a = 10; // a 是常量,不能被修改 a = 20; // 错误:常量不能赋值也就是说只要我用 const 定义了这个东西,那么我就不能再次更改了,跟使用define定义一个意思。
4.关于c++字符串入门
学过C语言的应该对字符串不陌生,但是从严格意义上来说C语言是没有字符串的,只能通过数组和指针的方式去使用,所以我们在使用C语言做字符串的相关题目时会显得吃力,但是 c++ 解决了这个问题,它有专门的字符串类型———string 类。
#include <string> using namespace std; // 简化代码,否则需写 std::string int main() { string s1; // 空字符串 string s2 = "hello"; // 直接初始化 string s3("world"); // 构造函数初始化 string s4 = s2; // 拷贝初始化(复制s2) string s5(5, 'a'); // 重复字符:"aaaaa" string s6=s2+s3; // 就是将s3粘贴在s2后方 return 0; }应该是非常好理解的,string s3("world") 等价于 string s3 = "world",而且 c++ 里面可以直接将一个字符串直接赋值给另一个。
接下来就是字符串的输入与输出:
#include <bits/stdc++.h> using namespace std; int main() { string s; //定义 cin >> s; //输入 (如果输入多个字符,例如:i love you) cout << s; //输出 (那么输出时候只会输出 i,因为输入只能识别一个单词) return 0; }这是最简单的输入输出方式,但只能满足一次输入输出一个单词,所以我们要学习 getline 的用法,让我们可以一次性输入输出多个单词。
#include <bits/stdc++.h> using namespace std; int main() { string s1; getline(cin,s1); cout << s1; return 0; }只需要改变 cin 就行了,cout 照常为输出,getline 的使用方法就是括号里面先写 cin 然后再写上你所需要输入的变量就行了。
5.字符串的一些处理
在C语言中求一个字符串的长度时,我们最简便的方法就是使用 strlen(变量) 来得出字符串的长度,我们还需要包含一个 string.h 的头文件。但在 c++ 中我们可以在使用这个万能头文件后,可以采用以下方式:
#include <bits/stdc++.h> using namespace std; int main() { string s1; getline(cin,s1); cout << s1.length(); //若是定义的是s2、s3,就是s2.length...... return 0; }注意在输入时,尽量还是使用 getline,因为 cin 依旧只能输入一个单词。
接下来再介绍一个 substr() 的使用方式:
#include <bits/stdc++.h> using namespace std; int main() { string s1="hello world!"; // h为第零个字符 string s2=s1.substr(6,5); // s2截取s1第六个字符开始 之后的5个字符 string s3=s1.substr(6,8); // s3即使超出了s1的额度了 但依旧将其后面的全部截取掉 string s4=s1.substr(6); // s4截取第六个字符开始之后的所有字符 cout << s2 << " " << s3 << " " << s4; return 0; }自己可以试着尝试编写运行一下,这样可以更好的理解其用法。
这一次也就更这么多,已经从学校回来了,争取在家里可以多更几篇。
希望这个月就可以通过 c++ 来写算法题了。