2012-09-18 577 views
1

我試圖將我的數組的每個元素都輸出到.txt文件中,但由於某種原因它甚至不創建該文件。我的顯示方法中有一個cmd輸出和文件輸出,這是從main調用的。 CMD輸出完美工作,但是當我使用ofstream嘗試創建文件並向其輸出數組元素時,我看不到任何創建的文本文件。ofstream不在C++中創建文件

ofstream ofs("TEST.txt"); 

if(!ofs) 
    cout << "cannot use" << endl; 
else 
{ 
    for(int a=0; a < 12; a++) 
    { 
     for(int b=0; b < 12; b++) 
     { 

      cout << RandomArray[a][b] << "\t"; 
      ofs << RandomArray[a][b]; 
     } 

     cout << "\n"; 
    } 

} 

ofs.close(); 
+2

你看到'不能使用'的文本,或者你只是沒有看到文件?何時何地檢查文件? –

+0

請注意,當流未打開時,您的'ofs.close()'也會被調用。 – qdii

+0

您是否在您的porgram/executable駐留於同一個目錄中查找該文件? – drahnr

回答

4

試試這個

#include <iostream> 
#include <fstream> 

#ifdef _WIN32 
#include <windows.h> 
#define SYSERROR() GetLastError() 
#else 
#include <errno.h> 
#define SYSERROR() errno 
#endif 

int main(int argc, char** argv) 
{ 
    std::ofstream of("TEXT.TXT"); 
    if(of.is_open()) 
    { 
     of<<"Some text here"<<std::endl; 
     of.flush(); 
     of.close(); 
     std::cout<<"wrote the file successfully!"<<std::endl; 
    } 
    else 
    { 
     std::cerr<<"Failed to open file : "<<SYSERROR()<<std::endl; 
     return -1; 
    } 
    return 0; 
} 

在Win32 GetLastError函數()的#define沒有經過測試,因爲我沒有Windows中得心應手。 errno位有效。這至少會告訴你錯誤是什麼,如果文件打開失敗

+0

他的評論顯示他正在使用windows – qdii

+0

是的...我沒有訪問Windows,所以沒有在Windows上測試..但GetLastError()應該工作,以顯示窗口上的錯誤...只是把一個警告emptor:D – mohaps

+0

給了我一個錯誤代碼!我該怎麼做? –

1

你的程序沒問題,只要能創建ofstream就可以工作。我認爲你沒有在正確的目錄中尋找。

+1

你知道嗎,你是對的!我只是通過我的整個計算機進行搜索,然後顯示出來。太傻了...對不起,謝謝你! – BubbleTree