0
如果提供了命令行參數argv [],那麼確定輸入是否爲文件名的方法是什麼?C++命令行參數驗證
E.g.如果我們在命令行中輸入ex.txt並打印出內容,如何編寫條件語句以確定argv [1]的輸入是否正確?
謝謝。如果我太模糊,請告訴我。這是我的第一篇文章,英文不是我的第一語言。
如果提供了命令行參數argv [],那麼確定輸入是否爲文件名的方法是什麼?C++命令行參數驗證
E.g.如果我們在命令行中輸入ex.txt並打印出內容,如何編寫條件語句以確定argv [1]的輸入是否正確?
謝謝。如果我太模糊,請告訴我。這是我的第一篇文章,英文不是我的第一語言。
你可能不想知道文件是否存在,而且如果你可以打開並閱讀它。唯一可靠的方法(順便說一下,目前標準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...
}
}
請注意,如果你確認這是好後關閉文件,也不能保證它仍然將是很好的,如果您稍後嘗試重新打開它。其他一些進程可能已經刪除了它或者獲得了您的權限來閱讀它。
文件的名稱可以是多種形式,不帶擴展名。你可以簡單地檢查文件的存在。 –
如果您的代碼應該打開一個文件,那麼在嘗試時幾乎沒有什麼壞處。 – usr2564301
Write 100 times「C不是C++不是C!」 – Olaf