1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【C++深度剖析教程9】初探C++标准库

【C++深度剖析教程9】初探C++标准库

时间:2019-03-11 17:32:16

相关推荐

【C++深度剖析教程9】初探C++标准库

在这之前,我写的C++程序不能叫做标准的C++程序,因为里面写的大多数还带有C语言的影子。今天我们来学习C++标准库。

首先看一下例子:操作符<<的原生意义是按位左移。那么我们重载这个操作符,将变量或者常量,左移到一个对象中!

看一个程序:

#include <stdio.h>const char endl = '\n';class Console{public:Console& operator << (int i){printf("%d", i);return *this;}Console& operator << (char c){printf("%c", c);return *this;}Console& operator << (const char* s){printf("%s", s);return *this;}Console& operator << (double d){printf("%f", d);return *this;}};Console cout;int main(){cout << 1 << endl;cout << "D.T.Software" << endl;double a = 0.1;double b = 0.2;cout << a + b << endl;}

运行结果:

1D.T.Software0.300000

以上程序呢,重载了操作符<<,让它把变量左移到一个对象cout中,学过C语言的话,就知道这个功能怎么跟printf的功能这么想呢,都是可以打印出结果的。没错,这个重载就是与printf功能一样,以后我们在C++的编程中都不再使用printf,都使用上面的方法。那么我们不可能每次都去定义那些类函数,而是直接调用库函数。前辈们已经把我们所需要的做的都做好了并且放到了C++标准库中。

那么什么是C++标准库呢?

C++标准库并不是C++语言的一部分C++标准库是由类库和库函数组成的集合C++标准库定义的类和对象都位于std 命名空间中C++标准库的头文件都不带.h后缀C++标准库涵盖了C库的功能

C++编译环境的组成:

C++标准库预定义了常用的数据结构:

下面我们看一下,C++的库,是否兼容C语言,看以下代码:

#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>using namespace std;int main(){printf("Hello Word!\n");char* p = (char*)malloc(16);strcpy(p, "D.T.Software");double a = 3;double b = 4;double c = sqrt(a*a + b*b);printf("c = %f\n",c);free(p);return 0;}

运行结果为:

Hello Word!c = 5.000000

从以上程序我们可以看出,虽然头文件都是包含的C++的标准库,但是程序中写的都是C语言。这说明,C++标准库完美的兼容了C语言的库。

在C语言中, scanf代表键盘的输入,那么在C++中,用什么表示键盘的对象呢?

来看一个例子感受一下C++库函数:

#include <iostream>#include <cmath>using namespace std;int main(){cout << "Hello world!" << endl;double a = 0;double b = 0;cout << "Input a: ";cin >> a;cout << "Input b: ";cin >> b;double c = sqrt(a*a + b*b);cout << "c = " << c << endl;return 0;}

运行结果为:

Hello world!Input a: 3Input b: 4c = 5

从键盘输入3和4,最终计算出运算结果!可以看出cin这个对象,类似于C语言中的scanf。

总结:

C++标准库是由类库和库函数组成的集合C++标准库包含经典算法和数据结构的实现C++标准库涵盖了C库的功能C++标准库位于std命名空间中

想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):

qq:1126137994

微信:liu1126137994

可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。