我是靠谱客的博主 朴实白云,最近开发中收集的这篇文章主要介绍C++关于std namespace与# include关系的有关问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++关于std namespace与# include<iostream>关系的问题
版上的大侠们你们好!
我是一名在校的C++初学者,关于namespace std 与# include<iostream>一直有一个问题没有弄懂,就是关于cin、cout等对象定义在哪里的问题。我已经知道的是如果要使用这两个istream、ostream类的对象时,在include中需要包含相应的头文件。而这时又要使用命名空间"using namespace std"的语句,这样说的话cin cout是否没有定义在类似<istream>、<ostream>、<iostream>等头文件中?如果是这样的话,namespace std又是定义在哪里的呢?
我在网页上搜索到有一个说法是std不是统一定义在哪一个具体的头文件中,而是不同的头文件都在向这里面填充内容。不知道这样的说法是否正确?
我也打开过iostream头文件打开,可以里面是一对编译预处理的命令,现在的能力是看不懂了。。。不知道哪位大侠能够从std 与iostream的关系上给以说明!
谢谢各位大侠!

------解决方案--------------------------------------------------------
lz可以看一下iostream中
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 istream cin;
但是类型istream的定义文件为iosfwd
该文件的开头就有个
_STD_BEGIN
即namespace std {
文件结尾有_STD_END 即}
即使用的istream是定义在std命名空间中
所以使用cin时需要
include <iostream>
using namespace std;
否则编译器在当前的命名空间中无法找到istream的定义

最后

以上就是朴实白云为你收集整理的C++关于std namespace与# include关系的有关问题的全部内容,希望文章能够帮你解决C++关于std namespace与# include关系的有关问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部