【发布时间】:2020-02-01 21:11:29
【问题描述】:
我在 <experimental/filesystem> 包含中找到了一个简洁的方法,它告诉我路径是文件还是目录,但在 g++ v 7.4.0 上尝试使用它时出现错误。我尝试使用的方法是:.is_regular_file()。
它甚至在 cppref 上,https://en.cppreference.com/w/cpp/experimental/fs/is_regular_file。
但是在编译时我得到“...没有名为'is_regular_file'的成员”错误。我无法使用常规文件系统,因为我的目标系统(Ubuntu 18.04 LTS)预装了 g++ 7.4.0 并且无法更改。
知道我做错了什么吗?有谁知道我的 is_regular_file 的替代方法,以便我可以检查文件是目录还是文件?
我的包括:
#include <string>
#include <vector>
#include <experimental/filesystem>
我正在使用以下标志:-std=c++17 -lstdc++fs -O3 -Wall -Wextra -Wpedantic -Werror
【问题讨论】:
-
你能试试cppref的第一个重载吗?或者您是否检查了所有三个重载并且没有一个存在/工作?
-
请为此问题提供完整的minimal reproducible example。该函数存在于 GCC 7.4.0 头文件中:github.com/gcc-mirror/gcc/blob/releases/gcc-7.4.0/…
-
三个都试过了,当在我的变量后面写点时,除了:
path、status、symlink_status和~directory_entry以及每个重载运算符之外,它甚至没有任何建议。 @ezegoing -
@MaxPower 什么点?这是
std::experimental::filesystem命名空间中的免费功能。我认为您将其误认为是成员函数。 -
“实验”的意思是:这是家常便饭。它可能会起作用。或者它可能不起作用。或者它可能会重新格式化您的硬盘驱动器。使用风险自负。这就是“实验性”的定义。
标签: c++ g++ filesystems ubuntu-18.04