2014-11-15 219 views
-2

我想知道這裏的錯誤是什麼。我想輸入文件的名稱,然後檢查文件是否存在,但我的代碼不起作用,我不知道爲什麼!檢查文件是否存在

#include <fstream> //for file I/O 
#include <iostream> 
#include <string> 

    using namespace std; 
    int main() 
    { 
    string filename; 
    cout << "Input a filename: "; 
    cin >> filename; 
    fstream filestr; 
     filestr.open (filename); 
     if (filestr.is_open()) 
     { 
     filestr << "File successfully open"; 
     filestr.close(); 
     } 
     else 
     { 
     cout << "Error opening file"; 
     } 
    return 0; 
    } 
+1

定義「錯誤」。編譯時間或運行時間? –

+0

你應該聲明流的類型。我的意思是指示,例如進出。看到這個:http://www.cplusplus.com/reference/fstream/ifstream/open/ – muradin

+0

對於較舊的標準定義使用'filestr.open(filename.c_str());' –

回答

0

你在這裏使用std::fstream時,你可能想使用std::ifstream指定要採取的輸入,而不是寫輸出。

std::ifstream file(filename); 
bool exists = file; // operator bool() 
0

filestr.open (filename); 

應該是

filestr.open (filename.c_str()); 

然而,在C++ 11過載可用這需要字符串作爲其參數。

在C++ 11 -

void open (const char* filename, 
      ios_base::openmode mode = ios_base::in | ios_base::out); 
void open (const string& filename, 
      ios_base::openmode mode = ios_base::in | ios_base::out);