#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的第八章寫得很清楚。