2015-10-24 87 views
0

如果提供了命令行參數argv [],那麼確定輸入是否爲文件名的方法是什麼?C++命令行參數驗證

E.g.如果我們在命令行中輸入ex.txt並打印出內容,如何編寫條件語句以確定argv [1]的輸入是否正確?

謝謝。如果我太模糊,請告訴我。這是我的第一篇文章,英文不是我的第一語言。

+0

文件的名稱可以是多種形式,不帶擴展名。你可以簡單地檢查文件的存在。 –

+0

如果您的代碼應該打開一個文件,那麼在嘗試時幾乎沒有什麼壞處。 – usr2564301

+1

Write 100 times「C不是C++不是C!」 – Olaf

回答

2

你可能不想知道文件是否存在,而且如果你可以打開並閱讀它。唯一可靠的方法(順便說一下,目前標準C++支持的唯一方法)做到這一點是嘗試打開文件,看看你是否成功。

#include <fstream> 
#include <iostream> 


int 
main(const int argc, const char *const *const argv) 
{ 
    for (int i = 1; i < argc; ++i) 
    { 
     std::ifstream istr {argv[i]}; 
     if (!istr) 
     { 
      std::cerr << "error: " << argv[i] << ": cannot read file\n"; 
      continue; 
     } 
     // Do something with the stream... 
    } 
} 

請注意,如果你確認這是好後關閉文件,也不能保證它仍然將是很好的,如果您稍後嘗試重新打開它。其他一些進程可能已經刪除了它或者獲得了您的權限來閱讀它。