代码之家  ›  专栏  ›  技术社区  ›  Mohan

ifstream::ifstream在目录上的行为是否定义良好?

  •  0
  • Mohan  · 技术社区  · 6 年前

    按照C++ 11标准 ,是

    ifstream in(".");
    

    在上下文中,我尽量避免使用 boost::filesystem

    编辑:根据我能找到的,我应该得到一个有效的ifstream(一个'good()'当且仅当目录存在时)。这可能为测试目录是否存在提供了一种比使用 boost::文件系统 因为后者需要链接更多的库。

    2 回复  |  直到 6 年前
        1
  •  2
  •   user10316011 user10316011    6 年前

    该标准似乎没有在其散文中提及“目录”的概念。这里提到了EISDIR errno和镜像posix的一般意图,但只是“可以用来报告低级条件”。我想说的是依赖于系统而不是可移植的。

        2
  •  0
  •   R Sahu    6 年前

    根据我能找到的,我应该得到一个有效的 ifstream good() 当且仅当目录存在时。

    标准并不能保证这一结果。我不会用它作为检查目录是否存在的机制。

    #if  defined(_WINDOWS)
    // Use Windows specific APIs
    #elif defined(_Linux)
    // Use Linux specific APIs
    #elif defined(_MacOS) ???
    // Use MacOS specific APIs
    #endif
    

    更多信息:

    How do you check if a directory exists on Windows in C?
    对于Linux: Checking if a directory exists in Unix (system call)