在这之前,我写的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语言,数据结构等技术问题。