2012-01-30 116 views
0

我正在開發一個Windows的VC++ 2008程序,它執行fileIO,並且遇到了一個非常奇怪的問題。在我的#include指令我有ios not recognized

#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <string> 

,然後我有實際執行FILEIO的方法,但是當我嘗試打開這樣的文件:

std::ofstream Output; 
Output.open("Output/log.txt", ios::out); 

我的智能感知允許,和甚至有正確的自動完成,但我的編譯器引發的錯誤:

1>c:...\engine\gsp420maincore\gsp420maincore\messagequeue.cpp(141) : error C2653: 'ios' : is not a class or namespace name 
1>c:...\engine\gsp420maincore\gsp420maincore\messagequeue.cpp(141) : error C2065: 'out' : undeclared identifier 

當我讀到有關ofstream.open()就指出,要打開的文件是否是用於輸入,輸出,或兩者應該是SPECI田間,但是IOS應該會自動通過任何其他的iostream #include指令包括,當我插入這個問題沒有解決的:

#include <ios> // directive 

編譯器有沒有投訴,當我刪除第二個說法,但我知道,我應該嘗試,並指定以防萬一我想從文件中讀入並寫入文件。我做錯什麼了嗎?

+0

你的意思是'std :: ios'? – wilhelmtell 2012-01-30 05:44:14

+0

是的,我確實需要說明。顯然是因爲這個文件是在使用namespace指令之前編譯的,所以我必須指定它駐留在std中 – gardian06 2012-01-30 05:48:46

回答

4

它看起來像你忘了用std::作爲它的前綴,而你還沒有使用過using namespace std;(根據你明確說明std::ofstream的名字空間的事實來判斷)。

嘗試將其更改爲std::ios::out

您不應該手動需要#include <ios>

2

如前所述,您需要std::ios::out - 只有您真的不需要它。當您打開ofstream時,默認情況下會打開以輸出(同樣,默認情況下會打開ifstream以進行輸入)。我還建議在創建時初始化對象,而不是創建一種未初始化的流,然後單獨打開它。考慮到這一點,你會得到相當簡單的代碼:

std::ofstream Output("output/log.txt");