2011-04-24 16 views
0

我試圖檢查文件是否存在,然後如果是這樣與任務出發,如果不只是輸出,有沒有這樣的文件。我已經在其他代碼中完成了它,但它似乎並沒有用我當前的代碼。關於℃以內文件存在檢查for循環++

它的基本閱讀:

count=argc; 


for(i=0; i < count-1; i++) 
{ 
    filename[i] = argv[i+1]; 
} 


for(i=0; i < count-1; i++) 
     { 
     int tempi=i; 
     ifstream infile(filename[i].c_str()); 

      if(infile) 
      { 
      //do things 
      } 
      else 
      { 
      cout<<"no file"<<endl; 
      } 
+1

哪一部分似乎並不奏效?在這種情況下,「似乎有效」是什麼意思?你期望會發生什麼,而發生了什麼? – 2011-04-24 20:50:41

+0

什麼在地球上「似乎沒有工作」是什麼意思?哎呀! – 2011-04-24 20:52:57

+0

我真的建議做出'stat'調用([的Win32](http://msdn.microsoft.com/en-us/library/14h5k7ff(V = VS.80)的.aspx)或[UNIX]( http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?stat+2)) – sehe 2011-04-24 20:54:06

回答

0

你需要調用infile.is_open()。另外,如果文件存在或不存在,你是否打算對文件做些什麼?

+0

MMMM我真的需要去檢查。我不認爲這是真的。 – sehe 2011-04-24 20:51:04

+0

@sehe:起初我的回答中有一個錯字。可能你在看到'.open()'而不是'.is_open()'時看到了它。 – 2011-04-24 20:52:20

+2

@John不,OP在代碼中的測試是正確的。 – 2011-04-24 20:57:46

0

訪問的argv的正規途徑是:

int main(int argc, char * argv[]) { 
    for (int i = 1; i < argc; i++) { 
     // do something with argv[i] 
    } 
} 
+0

但是這並沒有回答這個問題。 – 2011-04-24 21:01:46

+0

@Tomalak可能不是,但我發現OP的代碼不可讀。 – 2011-04-24 21:05:59

+1

這是沒有理由發表評論作爲答案。請閱讀我們的FAQ。 – 2011-04-24 21:07:16

0

infile,在有條件的,計算結果爲 false當流是一個「壞」狀態。

但是,僅僅打開一個文件失敗不會使流處於不良狀態(歡迎來到C++!)。只有在嘗試從流中讀取後,此機制才能爲您工作。

幸運的是,您可以使用 infile.is_open()明確測試流是否已打開。

編輯

以上是不是真的

Testing the stream state is sufficient,而我什麼都看不到你的代碼錯誤。