http://baike.baidu.com/link?url=UfF6_nyXCdeoJ17Iv9xHakI5vfk1DnmiXcFD_NNNbpc0xmYq7EKPKBp2TzzJpqy5M3YIahEIjPAOMku2xsI5EggR_fhJmDys5wsSj80YC0xe9V1IItoK6lGJsc0pLWKa这是百度的详细解析 我来总结一下:
c++标准库中所有的标识符都储存在名为“std”的namespace中。
这里解释一下namespace:把单个标识符下有大量逻辑联系的程序实体组合到一起,此标识符作为组合的名字。
再解释一下标识符:程序员自己规定具有特定含义的词,比如类名称,属性名称,变量名。(就是相当于形式参数,定义规则参考
http://baike.baidu.com/item/标识符
)
那么当我们使用标识符的时候,就必须想使用std,有三种方法:
1, 直接指定标识符
std::cout<<"yse"<<std::endl;2,使用using关键字
using std::cout<<"yes"<<using std::endl;3,使用using namespace std;
#include <iostream> using namespace std;那么问题来了,为什么在我使用多文件的时候,里面含有cin,cou,endl时不能仅仅在开头添加#include <iostream > 仅仅添加这个的话编译器就会说:cin was not declard;
参考iostream的百度资料
http://baike.baidu.com/link?url=ZFC3XsdhX8OHRvtQPp6DWiIkp4FqgfFeCaimOTcMZpm-DKTGOjgJ-RwJ8trSI_QRyB-3q7GnD2vNtMLCJi-G6p_612srRrGa2vliZyCz_zm
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
所以在使用cin ,cout,endl时必须同时使用#include<iostream> 以及using namespace std;