C++中fstream頭文件使用的一點小問題

出現錯誤

error C2065: 'ifstream' : undeclared identifier

程序中已經添加頭文件

#include <fstream>

 

最後發現問題在於未添加
using namespace std;

 

 

以下在網上摘得:

 

 

因爲標準庫非常的龐大,所程序員在選擇的類的名稱或函數名時就很有可能和標準庫中的某個名字相同。所以爲了避免這種情況所造成的名字衝突,就把標準庫中的一切都被放在名字空間std中。但這又會帶來了一個新問題。無數原有的C++代碼都依賴於使用了多年的僞標準庫中的功能,他們都是在全局空間下的。所以就有了<iostream.h>和<iostream>等等這樣的頭文件,一個是爲了兼容以前的C++代碼,一個是爲了支持新的標準。命名空間std封裝的是標準程序庫的名稱,標準程序庫爲了和以前的頭文件區別,一般不加".h"。

 

<iostream>和<iostream.h>是不一樣的,前者沒有後綴,實際上,在你的編譯器include文件夾裏面可以看到,二者是兩個文件,打開文件就會發現,裏面的代碼是不一樣的。後綴爲.h的頭文件c++標準已經明確提出不支持了,早些的實現將標準庫功能定義在全局空間裏,聲明在帶.h後綴的頭文件裏,c++標準爲了和C區別開,也爲了正確使用命名空間,規定頭文件不使用後綴.h。因此,當使用<iostream.h>時,相當於在c中調用庫函數,使用的是全局命名空間,也就是早期的c++實現;當使用<iostream>的時候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章