<分区>
如果提供命令行参数 argv[],确定该输入是否为文件名的方法是什么。
例如如果我们在命令行中输入ex.txt,然后打印出内容,我该如何写一个条件语句来判断argv[1]的输入是否正确呢?
谢谢。让我知道我是否太含糊了。这是我的第一篇文章,英语不是我的母语。
标签 c++
<分区>
如果提供命令行参数 argv[],确定该输入是否为文件名的方法是什么。
例如如果我们在命令行中输入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...
}
}
请注意,如果您在确认文件完好后将其关闭,则无法保证您稍后再次尝试打开它时它仍然完好。其他一些进程可能已将其删除或获取了您的阅读权限。
关于C++命令行参数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324217/