`
xiexd
  • 浏览: 248688 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

c++标准库——命名空间std和头文件的演变

    博客分类:
  • c++
阅读更多
c++标准库——命名空间std和头文件的演变 <!-- end postaction -->

1、命名空间std
C++标准中引入命名空间的概念,是为了解决不同模块或者函数库中相同标识符冲突的问题。有了命名空间的概念,标识符就被限制在特定的范围呢,不会引起命名冲突。最典型的例子就是std命名控件,C++标准库中所有标识符都包含在该命名空间中。
如果确信在程序中引用某个或者某些程序库不会引起命名冲突,那么可以通过using操作符来简化对程序库中标识符(通常时函数)的使用,例如:
using namespace std;
那么就可以不用在标识符在前缀std::来使用C++标准库库中的函数了。

2、头文件的命名和格式
C++标准引入的std命名空间并不向后兼容老的c++标准库。老的C++标准库的头文件中声明的标识符时全局范围的,不需要使用std命名空间限定就可 以使用。那么为了区分在标准化进程中的这种变化,C++新的标准库启用了新的头文件命名格式。这样就允许程序员通过包含不同格式的头文件来使用不同的 c++标准库。
新的C++标准库的头文件不再包含扩展名(.h, .hpp, .hxx等),形式如下:
#include <iostream>
#include <string>
这种新标准可以同样涵盖到C标准库,C标准库的头文件现在可以这样引用:
#include <cstdlib> //was: <stdlib.h>
#include <cstring> //was: <string.h>
而这种新格式的头文件中定义的标识符全部涵盖在std命名空间下。

这种新的命名方式的便利之处就在于可以方便地区分老的C标准库中的头文件和新的C++标准库中的头文件。比如C标准库中和C++标准库中原先都有一个<string.h>的头文件,如果同时使用的话,会很不方便。现在就不会存在这样的问题了,形式如下:
#include <string> //C++ stirng class
#include <cstring> //C char* functions

[注意]:这种新的命名标准并不是意味着在文件系统中标准库的头文件没有扩展名,标准库的头文件在实际的文件系统中可以有扩展名,也可以没有扩展 名,这取决于不同的C++系统include语句的实现。但是在实践中,大部分的C++系统的include语句就是简单地到文件系统中查找相同名称的头 文件,然后加载它,所以大部分c++系统的标准库头文件就是直接没有扩展名。但是,这种规则仅仅应用在标准库的头文件中,通常来说对于程序员自己定义的头 文件,还是加上特定的扩展名比较好。

当然,为了兼容性,原先C标准库的头文件还可以使用,诸如:
#include <stdlib.h>
这种情况下,所对应的标识符(变量或这函数)同时在全局范围和std命名空间中声明。

而对于C++标准库的老的头文件格式的使用,诸如:
#include <iostream.h>
在现有C++标准中没有说明,因此在理论上不应该被支持了。但是在实际中,一些C++系统的厂商实现中却提供了老的头文件格式,是为了向后兼容行。那么在 实际使用中,程序员应该根据自己的情况选择一种情况来使用,尽量使用新标准的格式,但如果未了兼容性一定要使用老的文件格式,也不是不可以。

分享到:
评论

相关推荐

    C++标准库——自学教程与参考手册

    C++标准库是一组库组件的集合,这些组件为C++程序提供了基本的函数和数据类型,包括输入/输出、字符串处理、数学运算、时间日期处理、容器类、算法和迭代器等。随着C++11标准的发布,标准库得到了大量更新和扩展,...

    C++标准库和头文件名字

    压缩包中的`C++标准库名字和头文件.docx`可能是对这些库和头文件的详细列表,而`C++标准库名字和头文件.jpg`可能是对应的图表或者示例,有助于视觉记忆和理解。这些资源对于初学者和有经验的开发者来说都是宝贵的...

    C++信息奥赛——入门引导 头文件.pdf

    后来C++引入了命名空间的概念,计划重新编写库,将类、函数、宏等都统一纳入一个命名空间,命名为std。 头文件的分类 传统C++头文件: * assert.h:设定插入点 * ctype.h:字符处理 * errno.h:定义错误码 * ...

    c++标准库头文件定义

    1. `&lt;iostream&gt;`:这是C++中最基础的输入/输出流头文件,包含了`std::cin`(标准输入)、`std::cout`(标准输出)和`std::cerr`(错误输出)等对象,用于进行基本的文本输入输出操作。 2. `&lt;string&gt;`:这个头文件...

    C++标准头文件的结构

    1. **C兼容头文件**:这类头文件以`&lt;c&gt;`前缀开始,如`&lt;cstring&gt;`、`&lt;cstdio&gt;`等,它们提供了与C语言标准库相对应的功能,但进行了命名空间的封装,避免了全局命名空间的污染。 2. **C++特有头文件**:包括`...

    c++标准库(含头文件、stl等)介绍

    C++头文件是标准库的主要入口,它们包含了各种函数和类的声明。例如: - `&lt;iostream&gt;`:用于输入输出操作,包括`cin`和`cout`。 - `&lt;vector&gt;`:定义了动态数组类`std::vector`。 - `&lt;string&gt;`:定义了字符串类`std::...

    C++标准库(pdf)

    命名空间`std`包含了C++标准库中的所有元素,通过使用这个命名空间,可以直接访问其下的类和函数,而无需前缀任何特定的名字。 #### 3.2 头文件 头文件是C++标准库中的重要组成部分,它们定义了库中各个部分的接口...

    c++ 命名空间

    通过使用`std`命名空间,C++标准库提供了一套丰富的工具和API,同时避免了与用户定义的标识符之间的冲突。此外,了解如何使用命名空间的不同方式对于编写高效、可维护的代码至关重要。尽管`using namespace std;`...

    C++ std命名空间.pdf

    在C++标准之前,通常使用`#include &lt;iostream.h&gt;`来包含输入输出流的头文件,但随着C++标准的更新,引入了命名空间的概念,将`iostream`等库元素封装到`std`命名空间中。因此,现在的标准做法是`#include &lt;iostream&gt;...

    c++标准库参考.pdf

    C++标准库是C++语言的一部分,提供了诸多功能,用以支持不同的数据结构、算法和各种功能。本篇文档参考内容涵盖了C++标准库中各个组件的细节,包括但不限于:算法、分配器、容器、迭代器、函数对象、时间库、文件...

    单件模式——C++实现(单一头文件)

    用c++实现的单件模式 单一头文件 直接继承可用

    stdint头文件 可用

    C99 中引进的一个标准C 库的头文件

    C++头文件2.0(万能头文件,必背头文件)

    C++头文件2.0(万能头文件,必背头文件)C++头文件2.0(万能头文件,必背头文件)C++头文件2.0(万能头文件,必背头文件)C++头文件2.0(万能头文件,必背头文件)C++头文件2.0(万能头文件,必背头文件)C++头文件...

    C++ 标准库 中文 高清 (2020最新带书签)

    C++标准库是C++编程语言的核心组成部分,它提供了一系列预先定义的数据结构、函数和算法,使得程序员可以高效地编写程序。C++标准库不仅包括了C标准库,还额外扩展了许多面向对象和泛型编程的功能。这个高清中文版的...

    C++标准库chm

    在I/O流库中,C++使用iostream头文件来处理输入和输出操作,如cin用于标准输入,cout用于标准输出。此外,fstream库提供了文件输入输出的功能,如ifstream和ofstream类。异常处理是C++中用于错误处理的重要机制,...

    如何在C++中添加头文件,c++万能库头文件

    头文件的路径可以是相对路径、绝对路径或者标准库路径。对于标准库头文件,你通常不需要提供路径,只需提供文件名即可。 使用头文件中的声明:一旦你包含了头文件,你就可以在源代码中使用该头文件中声明的类型、...

    标准C与C++头文件大全.zip

    但为了保持兼容性,C++头文件通常会提供C++风格的封装,例如`#include &lt;cstdlib&gt;`等同于C的`#include &lt;stdlib.h&gt;`,但前者会将所有符号放在`std`命名空间下。 在编程实践中,正确地使用头文件是至关重要的。过度...

    详尽C++头文件库查找方便快捷

    本文将详细介绍C++标准头文件库中的各种头文件,帮助读者更好地理解和使用这些资源。 #### 基础头文件 在C++中,基础头文件主要用于提供一些基本的功能支持,例如输入输出、字符处理等。以下是一些重要的基础头文件...

Global site tag (gtag.js) - Google Analytics