1#ifndef NEFORCE_CORE_FILE_PATH_HPP__
2#define NEFORCE_CORE_FILE_PATH_HPP__
14NEFORCE_BEGIN_NAMESPACE__
51#ifdef NEFORCE_PLATFORM_WINDOWS
53#elif defined(NEFORCE_PLATFORM_LINUX)
62 static constexpr char preferred_separator =
spliter[0];
85 const string* path_ =
nullptr;
118 if (!path_ || path_->empty() || start_ >= path_->size()) {
144 if (start_ >= path_->size()) {
173 if (done_ && b.done_) {
176 if (path_ != b.path_) {
179 return start_ == b.start_;
222 path& operator=(const
path&) = default;
223 path& operator=(
path&&) noexcept = default;
229 NEFORCE_NODISCARD const
string&
str() const noexcept {
return path_; }
241 NEFORCE_NODISCARD
const char*
data() const noexcept {
return path_.data(); }
247 NEFORCE_NODISCARD
bool empty() const noexcept {
return path_.empty(); }
390 NEFORCE_NODISCARD
bool exists() const noexcept;
402 NEFORCE_NODISCARD
bool is_file() const noexcept;
409 NEFORCE_NODISCARD static
bool exists(const
string&
path) noexcept;
423 NEFORCE_NODISCARD static
bool is_file(const
string&
path) noexcept;
435 explicit operator
string_view() const noexcept {
return path_.view(); }
467 void swap(
path& other)
noexcept { path_.swap(other.path_); }
472NEFORCE_END_NAMESPACE__
NEFORCE_NODISCARD constexpr basic_string_view view(const size_type off, size_type count=npos) const
获取子视图
forward_iterator_tag iterator_category
迭代器类别
reference operator*() const noexcept
解引用操作符
split_iterator & operator++()
前置递增操作符
NEFORCE_NODISCARD bool operator==(const split_iterator &b) const noexcept
相等比较操作符
split_iterator operator++(int)
后置递增操作符
split_iterator() noexcept=default
默认构造函数
string_view value_type
值类型
ptrdiff_t difference_type
差值类型
NEFORCE_NODISCARD bool operator!=(const split_iterator &b) const noexcept
不等比较操作符
path()=default
默认构造函数,创建空路径
path(string path) noexcept
从字符串构造路径
NEFORCE_NODISCARD bool operator==(const path &rhs) const
相等比较
NEFORCE_NODISCARD path absolute(const path &base=current_path()) const
获取绝对路径
NEFORCE_NODISCARD split_iterator begin() const
获取起始路径组件迭代器
NEFORCE_NODISCARD const char * data() const noexcept
获取C风格字符串
NEFORCE_NODISCARD path parent_path() const
获取父路径
NEFORCE_NODISCARD string_view stem() const noexcept
获取文件主名(不含扩展名)
NEFORCE_NODISCARD const string & str() const noexcept
获取路径字符串
NEFORCE_NODISCARD vector< path > child_dirs(bool include_hidden=false) const
获取直接子目录路径列表
static constexpr size_t buffer_size
文件操作缓冲区大小
NEFORCE_NODISCARD path_tree to_tree() const
扫描此路径(必须为目录)并返回路径树
path(const string_view path)
从字符串视图构造路径
NEFORCE_NODISCARD size_t to_hash() const
计算哈希值
static path current_path()
获取当前工作目录
NEFORCE_NODISCARD string to_string() const
转换为字符串
NEFORCE_NODISCARD split_iterator end() const
获取结束路径组件迭代器
NEFORCE_NODISCARD vector< path > children(bool include_hidden=false) const
获取直接子路径列表(非递归)
NEFORCE_NODISCARD path lexically_normal() const
规范化路径
NEFORCE_NODISCARD string_view view() const noexcept
获取路径字符串视图
NEFORCE_NODISCARD bool operator<(const path &rhs) const
小于比较
NEFORCE_NODISCARD string_view filename() const noexcept
获取文件名
NEFORCE_NODISCARD path relative(const path &base) const
获取相对于另一路径的路径
NEFORCE_NODISCARD bool is_directory() const noexcept
检查路径是否为目录
NEFORCE_NODISCARD bool is_file() const noexcept
检查路径是否为普通文件
void swap(path &other) noexcept
交换两个路径
static path temp_directory_path()
获取临时目录路径
path(const char *path)
从C风格字符串构造路径
NEFORCE_NODISCARD bool empty() const noexcept
检查路径是否为空
NEFORCE_NODISCARD string_view extension() const noexcept
获取文件扩展名
static constexpr auto spliter
路径分隔符集合
NEFORCE_NODISCARD vector< path > child_files(bool include_hidden=false) const
获取直接子文件路径列表
NEFORCE_NODISCARD bool exists() const noexcept
检查路径是否存在
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图