【发布时间】:2019-03-15 14:49:48
【问题描述】:
根据C++11标准,是
的行为ifstream in(".");
指定的,还是系统相关的?
就上下文而言,我试图避免使用boost::filesystem 和类似的库,因为它们会导致不相关的可移植性问题。
编辑:根据我能找到的,我应该得到一个有效的 ifstream(当且仅当目录存在时才是'good()'。这可能提供了一种比使用更便携的方式来测试目录是否存在boost::filesystem 因为后者需要你链接更多的库。
【问题讨论】:
-
你希望它做什么?
-
目录是 Unix 上的文件。见unix.stackexchange.com/questions/197439/…
-
@NathanOliver 我指定 C++ 11 是有原因的……
-
对不起,我没有看到标题中的标签。我已经编辑它以从标题中删除标签,而是用c++11 标记 Q
-
C++ 标准根本没有提到目录或 Unix。如果你想让你的程序在 Unix 上运行,你需要一些东西来保证你在 Unix 上的行为。 C++ 标准不是这样的文档。实际上,如果您将
std::ios_base::in指定为打开模式,您可能会得到good()流。不过,您不太可能从中得到任何好的reads。
标签: c++ c++11 language-lawyer