2010-09-27 62 views
0

嘿傢伙,我寫了有史以來最簡單的事情,只是創建一個ifstream閱讀文本文件,我有一個奇怪的錯誤。下面是代碼(注:「<」失蹤的iostream和fstream的寫得很好,在我的代碼,但我可以在這裏他們不會寫)非常基本的C++錯誤

#include "genlib.h" 
#include "simpio.h" 
#include "random.h" 
#include "vector.h" 
#include "map.h" 
#include <iostream> 
#include <fstream> 

int main() { 
ifstream in; 
in.open("Hamlet.txt"); 
if (in.fail()) Error("Could not open file"); 
return 0; 
} 

我得到的ifstream的中後,下面的錯誤;行:「錯誤:預期不合格id之前'='標記」

任何想法發生了什麼問題?

感謝

+0

你的代碼編譯正常,沒有錯誤。錯誤可能是你所有麻煩的原因。 – DumbCoder 2010-09-27 15:30:13

+0

什麼是所有外來的包括? – GManNickG 2010-09-27 18:36:35

+0

你確定要包含''map.h「'(不是''),''vector.h」'(而不是'')? – Arun 2010-09-27 18:45:26

回答

0

嘗試直接在構造函數中打開文件:

ifstream inf ("Hamlet.txt" , ifstream::in); 
0

使用std :: ifstream的

(並提供編譯代碼,這些不都是標準的頭,什麼是錯誤()?)

4

唯一不尋常的過去ifstream in;Error調用。我的猜測是這是一個寫得不好的宏。試試這個:

int main() { 
ifstream in; 
in.open("Hamlet.txt"); 
if (in.fail()) { Error("Could not open file"); } 
return 0; 
} 

注意新的大括號Error

+0

關於宏的好處。 – stijn 2010-09-27 15:02:00

1

我的猜測是,在你自己的一個包含文件(「genlib.h」和「simpio.h」似乎非標),那你#defined定義「在」

2

您需要添加

using namespace std; 

使用庫中的任意名稱而沒有限制。否則,聲明必須是

std::ifstream in; 

還有一個選項

using std::ifstream; 

,但我不會推薦它,因爲你可能不會經常寫出std::ifstream所有。