为了账号安全,请及时绑定邮箱和手机立即绑定

求解<iostream>和us namespace std

求解<iostream>和us namespace std

C C# C++
qq_改恒_0 2017-08-29 10:50:43
其中的<iostream>和us namespace std 有什么关系和iostream与us namesoace std 的含义及用法 谢谢
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

这篇blog是乱写的! C++ 标准库里根本没有 iostream.h 这个头文件。

为了区别于 C 标准库,C++ 标准库的头文件都没有 .h 结尾。符合标准规范的编译环境根本就不会有 iostream.h 这个头文件。


我想你应该知道头文件是做什么用的。C++ 中函数和变量在使用前需要声明。头文件中就是标准库中一些函数和变量的声明,当你需要使用标准库中的东西时,就要 include 相应的头文件。

iostream 中是一些和输入输出相关的内容,你想要用到这些标注库中输入输出函数时,就要 include <iostream>。


namespace 是为了解决命名冲突问题而引入的。标准库中声明了那么多的函数和常量,你自己的程序中就不能重复定义这些名字了,要避开不引起命名冲突是很麻烦的。

所以 C++ 引入的 namespace 机制,这些名字可以属于某个 namespace。使用时可以通过其 namespace 来引用这些名字,这样就不容易引起命名冲突。

C++ 标准库中所有的名字都在 std 这个 namespace中,那么比如你要使用标准库中用于输入的 cout,就要写成 std::cout。同时你在自己的程序里重新定义 cout 也不会有问题。


每次使用标准库中的名字都需要在前面加上 std::,有时会觉得很麻烦,这时可以用到 using 命令:

using namespace std;  这句告诉编译器可以直接到 std 中查找名字

这样你直接写 cout 时,编译器就能找到 std 中的 std::cout。

但你这样做的话,在你的程序中又不能定义和标准库中同名的名字了。若重新定义的话,编译器会找到两个名字(一个是你定义的、一个是 std 中的),这就冲突了。

所以上述方法是不推荐的!是不推荐的!不推荐的!

这违背了引入 namespace 的初衷!本来 namespace 就为了避免命名冲突的,而使用 using namespace std 这样的命令等于放弃了这个努力。


而有些时候你真的想减少敲 std::。比如你的这段程序中需要写上百次 std::cout,而且你保证不会重新定义 cout 的话,那你可以使用 using 的另一种形式:

using std::cout;  这样你可以在程序中直接写 cout,编译器会把它当作 std::cout 的。这就避免了多敲上百次 std::。而且库中的其他名字还限制在 std 中,你还可以重新定义它们,只是不能重定义 cout 了而已。 比如你可以重定义 cin,这不会和 std::cin 冲突。 这样既能在使用 cout 时省事,又不会影响 namespace 中的其他名字。

查看完整回答
3 反对 回复 2017-08-29
?
JurminHong

TA贡献1条经验 获得超0个赞

<iostream>是标准的C++头文件,需要使用命名空间命名才能正常使用。年轻人,多百度

查看完整回答
反对 回复 2017-08-29
  • 2 回答
  • 1 关注
  • 2760 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信