在别人代码里,经常看到std命名空间,比如使用std命名空间里的标准输入输出流对象cout:

#include<iostream>           

using namespace std;

int main()
{
cout << "Hello world" << endl;
return 0;
}

其中cout相当于控制台输出(console out),然后通过<<左移操作符,将每个字符打印出来.

endl相当于就是'\n'换行.

接下来我们便通过上章学习的操作符重载,来实现上面功能

#include "stdio.h"
const char endl='\n'; class Console{
public:
Console& operator <<(const char* str)
{
printf("%s",str);
return *this;
} Console& operator <<(char c)
{
printf("%c",c);
return *this;
}
}; Console cout; int main()
{
cout<<"Hello world"<<endl;
return 0;
}

上面的操作符重载(<<),为什么返回值是return *this?

因为,我们需要连续使用<<,比如:

cout<<"Hello word"<<endl;      //等价于:   (cout<<"Hello word")<<endl;

运行(cout<<"Hello word")后,便会将cout对象return出来,然后继续调用cout<<endl.

通过cout后,便无需再写输出格式了,不会像printf()那么麻烦了.

而前辈们已经将cout,cin这些开发成C++标准库了,我们直接调用就好了.

C++标准库描述

  • C++标准库是由类库函数库 组成的集合, 不是C++语言的一部分
  • C++标准库中定义的类和对象,都位于std命名空间
  • C++标准库的头文件都不带.h后缀,比如: #include<iostream>
  • C++标准库涵盖了C库的功能

C++标准库里还实现了多数常用的数据结构以及类似C语言的库,比如:

上面的<cstdio>,是将以前C语言的stdio.h包含的内容都被定义在命名空间std中.

而以前的stdio.h的内容是被定义在全局命名空间中的.

所以使用C++标准库时,需要使用using namespace std; 来声明使用std命令空间.

接下来下章,来学习C++标准库-string类

16.C++-初探标准库的更多相关文章

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

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

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

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

  3. 简明Python3教程 16.标准库

    简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...

  4. Python学习笔记16:标准库多线程(threading包裹)

    Python主要是通过标准库threading包来实现多线程. 今天,互联网时代,所有的server您将收到大量请求. server要利用多线程的方式的优势来处理这些请求,为了改善网络port读写效率 ...

  5. 第32课 初探C++标准库

    有趣的重载: 实验: 将1左移到cout对象中. 将Test改名为Console,此时我们的本意是想让这个cout代表当前的命令行: cout代表命令行的一个实例,本意是想将1打印到命令行上. 我们在 ...

  6. C++标准库的初探

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

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

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

  8. C标准库-数值字符串转换与内存分配函数

    原文链接:http://www.orlion.ga/977/ 一.数值字符串转换函数 #include <stdlib.h> int atoi(const char *nptr); dou ...

  9. 【夯实PHP基础】PHP标准库 SPL

    PHP SPL笔记 这几天,我在学习PHP语言中的SPL. 这个东西应该属于PHP中的高级内容,看上去很复杂,但是非常有用,所以我做了长篇笔记.不然记不住,以后要用的时候,还是要从头学起. 由于这是供 ...

随机推荐

  1. String不可变StringBuffer可变

    String是一个类,也可以表示字符串数据类型 String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值 ...

  2. 深度学习篇——Tensorflow-GPU配置

    tensoflow-gpu安装 对于python 3.5和3.6的童鞋们而言,安装tensorflow其实并不难,因为我们可以通过pip直接安装. 不过,第一要求你安装的python是64位的,如下图 ...

  3. 【linux之挂载,Raid,LVM】

    一.挂载,卸载 挂载:将新的文件系统关联至当前根文件系统卸载:将某文件系统与当前根文件系统的关联关系移除 cat /etc/mtab 存储着已经挂载的文件系统 (跟 mount 一样) mount:显 ...

  4. GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen

    GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置. GetClientRect取得窗口客户区(不包括非客 ...

  5. Hidden Markov Models(HMM) 初理解

    1. 一个简单例子

  6. servlet上传文件报错(二)

    1.具体报错如下: java.io.FileNotFoundException: D:\MyEclipse\workspace\FileUpload\WebRoot\upload (拒绝访问.) at ...

  7. Java考查“==”和equals

    /** * */ package com.you.demo; /** * @author YouHaiDong * @date 2015-04-02 */ public class Welcome { ...

  8. Java Breakpoint

    1.错误描述 Java Breakpoint Unable to install breakpoint in com.you.humb.web.commom.dao.impl.ExportDaoImp ...

  9. class-感知机Perception

    1 感知机模型1.1 模型定义2 感知机学习策略2.1 数据的线性可分性2.2 学习策略3 学习算法3.1 算法原始形式3.2 收敛性3 学习算法的对偶形式 1 感知机模型 感知机perceptron ...

  10. ORA-01940: cannot drop a user that is currently connected解决方法

    我们在删除数据库用户时候会碰到如下错误 SQL> DROP USER sys_xj cascade; DROP USER sys_xj cascade*ERROR at line 1:ORA-0 ...