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

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

  1. 【C++深度剖析教程39】实现C++数组类模板

    上一篇文章在那个学习了多参数类模板与特化的分析:点击链接查看上一篇文章:类模板深度剖析 本篇文章学习记录: 数值型模板参数 实现C++数组类模板 1.模板中的数值型参数 模板参数可以是数值型参数.也就 ...

  2. 【C++深度剖析教程12】数组操作符的重载

    之前写的C++学习记录忘记打编号了,从今天开始,所有内容,记录编号,方便以后的查阅复习.今天学习的是C++中,数组操作符的重载. 上一篇博文写的是介绍C++中的字符串类,我们知道,C++标准库中通过s ...

  3. 【C++深度剖析教程10】C++中的字符串类

    首先我们看看C语言: C语言不支持真正意义上的字符串 C语言用字符数组和一组函数实现字符串操作 语言不支持自定义类型,一次无法获得字符串类型 从C到C++中的进化过程中引入了自定义类型 在C++中,可 ...

  4. [python教程入门学习]Python标准库映射类型与可散列数据类型的关系

    本文章向大家介绍Python标准库映射类型与可散列数据类型的关系,主要包括Python标准库映射类型与可散列数据类型的关系使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  5. 深度之眼(十七)——Python标准库

    文章目录 导读 一.time--处理时间的标准库 1.1 获取现在时间 1.2 时间戳和计时器 1.3 格式化输出 1.4 睡觉 二.random--处理随机问题的标准库 2.1 随机种子--seed ...

  6. 初探C++标准库:移位左移、右移操作符的重载,C++标准库

    C++标准库 移位左移.右移操作符的重载 C++标准库 移位左移.右移操作符的重载 怎么把变量/常量通过移位操作符,移到一个类的对象中去呢? #include <stdio.h>const ...

  7. 【C++深度剖析教程25】继承中的构造与析构

    今天来学习C++中继承的构造与析构,有兴趣一起学习的加qq:1126137994 1.问题 如何初始化父类成员?父类构造函数与子类构造函数有什么关系? 子类对象是如何构造的? 子类中可以定义构造函数 ...

  8. 【C++深度剖析教程38】类模板深度剖析

    加qq1126137994 微信:liu1126137994 一起学习更多技术!!! 1.多参数类模板 类模板可以定义任意多个不同的类型参数 类模板可以被特化: 指定类模板的特定实现 部分类型参数必须 ...

  9. 【C++深度剖析教程30】C++中抽象类和接口

    加qq1126137994 微信:liu1126137994 1.面向对象中的抽象概念; 在现实中,需要知道具体的图形类型才能知道如何求面积,但是对于抽象的'图形',我们是没法求其面积的,而且对其求面 ...

最新文章

  1. Django 连接Mysql异常处理
  2. 返回空的List集合
  3. python基础、print,input,if判断等
  4. RMAN Restore, Recovery
  5. 一些杂七杂八的前端知识1
  6. (cljs/run-at (JSVM. :all) 细说函数)
  7. 如何验证APN是否添加成功?
  8. IOS开发(63)之GCD执行延迟操作
  9. android 闹钟布局,Android闹钟UI
  10. mysql查询包含字符串的记录_MySQL查询字符串中包含字符的记录
  11. 网络工程交换技术之hsrp
  12. js获取浏览器信息及版本(兼容IE)
  13. springboot+vue在线答疑系统(源码+说明文档)
  14. EasyExcel设置行中单个单元格的样式
  15. kali mysql停止服务器_MySQL主从复制配置详解
  16. 【项目难点】实现微信小程序中点击头像更换头像
  17. 我糟糕的2019年:虽流年不利,但我心仍坚定
  18. 正确在WPF中对Windows窗体背景进行设置
  19. 微信小程序 人脸追踪+人脸识别+视频上传 页面
  20. 浅谈标签传播算法:LPA

热门文章

  1. Linux 用C/C++创建新文件并写入内容
  2. linux重启memcache_Linux中安装Memcached服务的方法
  3. python网络编程知识点_python 网络编程要点
  4. Django Form -- 字段的用法扩展
  5. java parseint()
  6. 【Android Developers Training】 58. 缓存位图
  7. 源码搭建lamp环境
  8. linux 培训6,Linux Syscalls有 6个参数(Linux Syscalls with 6 parameters)
  9. Android 帧动画,加载动画,AnimationDrawable,仿京东加载动画
  10. cesium根据输入高度设置相机camera视角高度