在这之前,我写的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;
        
}

运行结果:

1
D.T.Software
0.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: 3
Input b: 4
c = 5

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

总结:

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

想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。