你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

C++——标准库

[复制链接]
gaosmile 发布时间:2020-8-14 22:12
一、标准库“引子”:
1、操作符"<<"的原生意义是按位左移,例如:
1<<2
它的意义是将整数1按位左移2位,即:
0000 0001   演变成      0000 0100
重载左移操作符,将变量或者常量左移到一个对象中
代码示例:
#include <stdio.h>

const char endl = '\n';

class Console
{
public:
    Console& operator <<(int i)
    {
        printf("%d\n",i);
        return *this;
    }
    Console& operator << (char c)
    {
       printf("%c\n",c);
       return *this;
    }
    Console& operator <<(const char* s)
    {
         printf("%s\n",s);
         return *this;
    }
    Console& operator << (double d)
    {
       printf("%f\n",d);
       return *this;
    }
};

Console cout;

int main()
{
     cout<<1 << endl;
     cout<<"TXP"<<endl;

     double a = 0.1;
     double b = 0.2;

     cout << a + b <<endl;

     return 0;
}


运行结果:
root@txp-virtual-machine:/home/txp# ./a.out
1


TXP


0.300000


从上面我们可以看到,不直接使用printf函数去打印这个值,这个以前在书上,都是直接讲解把数值说送到输出流中去,但是你一开始学习cout函数(或者说你还没有接触到对象的时候,根本不明白这什么意思);如果进行了左移的重载之后,那么程序将产生神奇的变化,所以在 main() 中不用 printf() 和格式化字符串 '\n' 了,因为编译器会通过重载的机制会为我们选择究竟使用哪一个重载机制。
二、c++标准库:
1、标准库的特性:
  • C++标准库并不是C++语言的一部分
  • C++标准库是由类库和函数库组成的集合
  • C++标准库中定义的类和对象都位于std命名空间中
  • C++标准库的头文件都不带.h后缀,当然也兼容c语言里面的.h写法
  • C++标准库涵盖了C库的功能

2、C++编译环境的组成:
微信图片_20200814221209.png
3、C++标准库预定义了很多常用的数据结构:
-<bitset>        -<set>          -<cstdio>
-<deque>         -<stack>        -<cstring>   
-<list>          -<vector>       -<cstdlib>
-<queue>         -<map>          -<cmath>   

代码示例:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>

using namespace std;//所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙


int main()
{
    printf("Hello world!\n");

    char* p = (char*)malloc(16);

    strcpy(p, "TXP");

    double a = 3;
    double b = 4;
    double c = sqrt(a * a + b * b);

    printf("c = %f\n", c);

    free(p);

    return 0;
}


输出结果:
root@txp-virtual-machine:/home/txp# ./a.out
Hello world!
c = 5.000000

注:关于命名空间的介绍,这里没有详细的去介绍,后面会重新做一个详细介绍。
4、cout和cin两个函数形象比喻:
微信图片_20200814221213.png
代码示例:
#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;
}

结果输出:
root@txp-virtual-machine:/home/txp# ./a.out
Hello world!
Input a: 3
Input b: 5
c = 5.83095

当然这里关于cout和cin两个函数里面的细节也没有写明;不过如果接触过C++的朋友,现在看起来,现在这种写法,更加c++正统一点,之前的写法都是c写法,除了类的写法之外。
三、总结:
  • C++标准库是由类库和函数库组成的集合
  • C++标准库包含经典算法和数据结构的实现
  • C++标准库涵盖了C库的功能
  • C++标准库位于std命名空间中

本期的内容对于接触过C++的朋友来说,非常简单。好了,今天的分享就到这里,如果文章中有错误或者不理解的地方,可以交流互动,一起进步。
收藏 评论0 发布时间:2020-8-14 22:12

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版