• 第32课 初探C++标准库


    有趣的重载:

    实验:

    将1左移到cout对象中。

    将Test改名为Console,此时我们的本意是想让这个cout代表当前的命令行:

    cout代表命令行的一个实例,本意是想将1打印到命令行上。

    我们在重载函数中用printf打印:

    运行结果如下:

    可以看到1被打印出来了。

    我们还可以重载输出字符:

    运行结果如下:

    改进重载函数:

    这样第24行就实现了连续的传送。

    将换行符定义成一个常量:

    最终完善的程序:

     1 #include <stdio.h>
     2 
     3 const char endl = '
    ';
     4 
     5 class Console
     6 {
     7 public:
     8     Console& operator << (int i)
     9     {
    10         printf("%d", i);
    11         
    12         return *this;
    13     }
    14     Console& operator << (char c)
    15     {
    16         printf("%c", c);
    17         
    18         return *this;
    19     }
    20     Console& operator << (const char* s)
    21     {
    22         printf("%s", s);
    23         
    24         return *this;
    25     }
    26     Console& operator << (double d)
    27     {
    28         printf("%f", d);
    29         
    30         return *this;
    31     }
    32 };
    33 
    34 Console cout;
    35 
    36 int main()
    37 {
    38     cout << 1 << endl;
    39     cout << "D.T.Software" << endl;
    40     
    41     double a = 0.1;
    42     double b = 0.2;
    43     
    44     cout << a + b << endl;
    45     
    46     return 0;
    47 }

    运行结果如下:

    重载过后我们就可以使用console实例来输出了,而不用每一次都输入格式化字符串了。

    C++标准库:

     重复发明轮子并不是一件有创造性的事,站在巨人的肩膀上解决问题会更加高效。

    上述的输出流对象已经在C++标准库中实现了。

    C++标准库有一个子库,这个子库涵盖了C库的功能。

    C++编译环境的组成:

    C语言兼容库和C++标准库中的C库子模块功能是重复的,但是它们所包含的头文件是不一样的。

    标准库的常用数据结构:

    最右边一列就是C语言子库。为了兼容C语言编译器的库中所提供的功能。

    C++标准库中的C库兼容:

    我们在上面程序中使用的 #include <stdio.h>就是C兼容库,而不是C语言库,C兼容库是由编译器厂商提供的,不是标准库的一部分。

     例:

    这里包含的头文件既不是C++标准库,也不是C语言库,它是C++编译器厂商为了推广自己的产品而提供出来的C兼容库。

    我们将C兼容库换成C++标准库中的C兼容模块:

    这时就得打开std命名空间了。

    运行结果如下:

    C++标准库:

    前辈们将显示器和键盘实现成了C++中的对象。

    C++中的输入输出:

     1 #include <iostream>
     2 #include <cmath>
     3 
     4 using namespace std;
     5 
     6 
     7 int main()
     8 {
     9     cout << "Hello world!" << endl;
    10     
    11     double a = 0;
    12     double b = 0;
    13     
    14     cout << "Input a: ";
    15     cin >> a;
    16     
    17     cout << "Input b: ";
    18     cin >> b;
    19     
    20     double c = sqrt(a * a + b * b);
    21     
    22     cout << "c = " << c << endl;
    23     
    24     return 0;
    25 }

    运行结果如下:

    小结:

  • 相关阅读:
    简易sql拼接工具类(使用StringBuilder实现)
    缓存工具类(使用ConcurrentMap集合实现)
    properties文档读取工具类
    【Codeforces Round #655 (Div. 2)】A-D
    【2020 杭电多校第四场】Go Running 最小点覆盖
    【2020 杭电多校第四场】1002 Blow up the Enemy
    【2020 HDU 多校训练第三场 1007 Tokitsukaze and Rescue】暴力删边&最短路
    【2020杭电多校第二场】Total Eclipse 思维+并查集
    【2020HDU多校】Lead of Wisdom 暴力
    【CF-1371 C-E2】
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9571643.html
Copyright © 2020-2023  润新知