经过算法的煎熬后,我几度以为算法真的是非常关键的,但是经过了一次为了组队而进行的简单的小面试之后,我发现,其实对于制作项目来说,语言特性的掌握也十分重要。算法题和项目是两种东西,所用的方法也是不同的,因此我也会不定期的发一些算法题目的讲解和c++的读书笔记。
这一个系列的文章我是打算一句这本书,主要讲解一下c和c++的一些差别。这一系列希望能给学了c语言但是又想学一点c++的同学一点帮助。
c++可能不是所有语言中最难的语言,但一定是不简单的。
这里就直接从输入和输出开始吧,所使用的编译器是vs2022。
c++使用了一个不同于c语言的标准库来提供IO机制(IO: in 和 out 指输入和输出),它不同于c语言。c语言所使用的是#include<stdio.h>,这里面的io就是in 和 out。而c++一般所使用的是iostream库。这个库有点像c语言,这个库分为istream和ostream两种基础类型。分别表示输入流和输出流。
这个“流”的意思,大家可以理解为随着时间的推移,字符是顺序生成或是消耗的。
在这两个标准库中定义了4个io对象。分别为cin , cout ,cerr , clog。
这里主要介绍cin 和 cout。这两个用c语言的理解,应该为scanf和printf两个函数。
但是在C++中被称作对象,而不是函数了。例如:cin是istream的一个对象,并且这个对象被称作标准输入。cout是作为ostream类型的一个对象。
标准库还定义了两个ostream的对象,分别是cerr和clog。cerr用于输出警告和错误消息,因为也被称作标准错误,clog用于输出程序运行时的一般性的消息。
#include<iostream>
int main() {
std::cout << "输入两个数字" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << v1 << "和" << "v2" << "的和为" << v1 + v2 << std::endl;
return 0;
}
简单的解析一下这段代码。在c++中有许许多多的命名空间,其中标准库的命名空间是std,为了防止在不同的命名空间下有不同的对象,为了防止对象的名字相同,导致程序错误,所以应当加入命名空间。当然有一些算法基础的人可能会直接使用
using namespace std;
这样就可以取消掉std::这个前缀,不过这里就先不过多讲解了。
“ :: ”为作用域运算符,来指出命名空间std的名字,cout和cin。
回到这段代码,大家可以尝试着运行一下,输入3和7,然后回车。
这段代码中使用了“<<”运算符,为输出运算符。
这里第一句的cout所输出的就是一个字符串面值常量,大家也可以理解为文本输出。
第二个endl被称为操纵符的特殊值,这里的endl表示结束当前行,并且将关联的缓冲区内容刷到设备中,相当于c语言中的\n。
大家可以将'<<"和">>"的运算符理解为数据流动的方向,比如说cin是通过读入数据,将数据流动到变量之中。cout即是将数据流入到cout这个对象中。
这样第一个c++程序就完成了。