C++命令行参数验证

标签 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/

相关文章:

c++ - QT ui 指针中缺少属性和方法

c++ - 标准功能的组成

c++ - 在 Visual Studio 2013 中使用 Libusb

c++ - Direct X 9 - 三角形没有出现

c++ - C++ 中的 nullptr 和 nullptr_t 有什么区别?

vector 的 C++ STL vector 和内存管理

VS 2008 中的 C++ 0x 错误

c++ - 选择合适的数据结构

c++ - 我可以在不修改 QWidget 子类 PIMPL 样式的情况下包装它吗

c++ - 错误 "C1083 cannot open include file gecode/int.hh"尽管路径设置正确