2016-08-18 256 views
1

我面臨着一個流問題,程序無法打開我想寫的文件。最小,完整和變化的代碼如下所示:ofstream:無法打開文件

#include <cstdio> 
#include <fstream> 

using namespace std; 

int main(){ 

    string root_path = "E:\\160818\\"; 
    string file_path = root_path + "haar_data.txt"; 

    ofstream haar_file(file_path.c_str()); 

    if(!haar_file) // < -------- File cannot be open 
    { 
     cout<<"Error opening file for writing\n"; 
     return 1; 
    } 
    haar_file.close(); 

    return 0; 
} 

我的編譯器是VS2008。屏幕輸出爲

打開文件寫入時出錯。

什麼是錯誤?我想打開這個文件來寫一些東西。

+1

文件haar_data.txt是否存在,或者你想創建它嗎?您的程序是否允許在此路徑中創建/修改文件? (也許以管理員身份運行) (哦,也許嘗試用\替換\\,不確定它是否適用於Windows,但值得一試) – bisthebis

+2

您沒有創建或打開文件的權限。簡單! –

+1

順便說一句,'main'返回'int'。 –

回答

3

我編譯了你的代碼並使用它,它工作。


請注意,您沒有在您提供的代碼中包含iostream,因此我必須添加它,因爲'cout'表達式。 請注意,由於C++ 11,您不需要使用.C_str()來打開文件。 請注意,如果您的文件不存在,因爲您使用的是流(打開與ios :: out),您的文件將被創建。 您是否使用管理員權限? 你的路徑是否正確(文件夾名稱錯誤?)

+0

是的,我的文件夾名稱包含中文,這會導致此問題。 – Lee

+0

在這種情況下,如何使用「管理權限」來寫入文件?它會在運行時是一個簡單的'sudo。/ executable',還是需要在代碼中完成? –