有趣的重载:

实验:

将1左移到cout对象中。

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

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

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

运行结果如下:

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

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

运行结果如下:

改进重载函数:

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

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

最终完善的程序:

 #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 << << endl;
cout << "D.T.Software" << endl; double a = 0.1;
double b = 0.2; cout << a + b << endl; return ;
}

运行结果如下:

重载过后我们就可以使用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++中的输入输出:

 #include <iostream>
#include <cmath> using namespace std; int main()
{
cout << "Hello world!" << endl; double a = ;
double b = ; cout << "Input a: ";
cin >> a; cout << "Input b: ";
cin >> b; double c = sqrt(a * a + b * b); cout << "c = " << c << endl; return ;
}

运行结果如下:

小结:

第32课 初探C++标准库的更多相关文章

  1. 32,初探c++标准库

    1. 有趣的重载 (1)操作符<<:原义是按位左移,重载“<<”可将变量或常量左移到对象中 重载左移操作符(仿cout类) #include<stdio.h> co ...

  2. c++标准库多线程入门

    从c++ 11开始,语言核心和标准库开始引入了对多线程的原生支持.如下所示: int doSth(char c) { default_random_engine dre(c); uniform_int ...

  3. 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...

  4. C++标准库的初探

    1,操作符 << 的原生意义是按位左移,例: 1 << 2; 其底层的意义是将整数 1 按位左移 2 位,即: 0000 0001  ==> 0000 0100: 2,重 ...

  5. 把《c++ primer》读薄(3-1 标准库string类型初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...

  6. 16.C++-初探标准库

    在别人代码里,经常看到std命名空间,比如使用std命名空间里的标准输入输出流对象cout: #include<iostream> using namespace std; int mai ...

  7. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  8. 把《c++ primer》读薄(3-3 标准库bitset类型)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...

  9. python标准库之字符编码详解

    codesc官方地址:https://docs.python.org/2/library/codecs.html 相关帮助:http://www.cnblogs.com/huxi/archive/20 ...

随机推荐

  1. Codeforces Beta Round #95 (Div. 2) C. The World is a Theatre 组合数学

    C. The World is a Theatre There are n boys and m girls attending a theatre club. To set a play " ...

  2. go 并发 demo

    两个进程执行两个goroutine // This sample program demonstrates how to create goroutines and // how the schedu ...

  3. Goroutines和Channels(三)

    clock服务器每一个连接都会起一个goroutine.在本节中我们会创建一个echo服务器,这个服务在每个连接中会有多个goroutine.大多数echo服务仅仅会返回他们读取到的内容,就像下面这个 ...

  4. python 集合的比较

    setx = set(["apple", "mango"]) sety = set(["mango", "orange" ...

  5. python 操作浏览器打开指定网页

    #! /usr/bin/env python # encoding=utf8 import webbrowser import time webbrowser.open("http://ww ...

  6. Python day12部分内置函数的常见方法

    #内置函数 print(abs(-1))#绝对值 ']))#判断list的真假,都真则真,有一个假也是假 print(any(''))#有一个真就真,全假则假 print(bin(3))#十进制转换二 ...

  7. 对不队——Alpha冲刺

    第五天  日期:2018/6/20 一. 今日完成任务:专家审稿逻辑的开发 冯晓.马思远:会议网站栏目管理开发,软件功能测试 王爽.彭辉:审稿管理员分稿和稿件查找功能开发,博客撰写 吴琼.郝延婷:更换 ...

  8. java后台校验 hibernate validator

    链接 : https://www.cnblogs.com/softidea/p/6044123.html

  9. template.js 模版内调用外部JS方法

    template.js 一款 JavaScript 模板引擎,简单,好用.提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.模版定义如下: ...

  10. 雷林鹏分享:C# 多线程

    C# 多线程 线程 被定义为程序的执行路径.每个线程都定义了一个独特的控制流.如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作. 线程是轻量级进 ...