#include <fstream> ,相当于是引用标准C++的头文件,ifstream是标准C++的STL中的类,STL中的类都是定义在std这个名字空间中。
所以std::ifstream sitelist( "sitelist ",ios::nocreate);
就是使用std这个名字空间中定义的ifstream这个类,而且这样使用这个类就没有出现在全局名字空间中。
而
#include <fstream.h> ,相当于使用了VC实现的C++提供的头文件,此时ifstream虽有相同的功能,可是他现在相当于是全局名字空间中定义的了。相当于:
::ifstream sitelist( "sitelist ",ios::nocreate);
结果结果和别的东东形成全局名字空间污染问题。(也就是重名了)
C++Primer的第八章写得很清楚。