检查路径是否引用目录,即使它不存在



我需要能够在命令行实用程序中区分两种情况:

  1. 用户指定了一个输出目录(-o output/(:创建一个名为output/file.ext的文件
  2. 用户指定了一个输出文件(-o output(:创建一个名为output的文件

C++17中确定output/output是指向目录的路径的正确方法是什么,即使output目录不存在?

自由函数std::filesystem::is_directory()返回false,除非目录存在。

检查std::filesystem::path::has_filename()返回假可靠吗?

编辑:根据注释阐明用例。

这在理论上是不可能的,因为如果用户指定的路径的最后一个元素不存在,则可以将其创建为文件或目录。

但是,您可以检查以目录分隔符(std::path::preferred_separator(结尾的路径的特殊情况,这种情况仅适用于目录,而不适用于常规文件。这很容易做到。

最新更新