我需要能够在命令行实用程序中区分两种情况:
- 用户指定了一个输出目录(
-o output/
(:创建一个名为output/file.ext
的文件 - 用户指定了一个输出文件(
-o output
(:创建一个名为output
的文件
C++17中确定output/
或output
是指向目录的路径的正确方法是什么,即使output
目录不存在?
自由函数std::filesystem::is_directory()
返回false,除非目录存在。
检查std::filesystem::path::has_filename()
返回假可靠吗?
编辑:根据注释阐明用例。
这在理论上是不可能的,因为如果用户指定的路径的最后一个元素不存在,则可以将其创建为文件或目录。
但是,您可以检查以目录分隔符(std::path::preferred_separator
(结尾的路径的特殊情况,这种情况仅适用于目录,而不适用于常规文件。这很容易做到。