std::filesystem::directory_entry:: assign
From cppreference.net
<
cpp
|
filesystem
|
directory entry
|
void
assign
(
const
std::
filesystem
::
path
&
p
)
;
|
(1) | (C++17 起) |
|
void
assign
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(2) | (C++17 起) |
为目录条目对象分配新内容。将路径设置为
p
并调用
refresh
来更新缓存的属性。如果发生错误,缓存属性的值将处于未指定状态。
此函数不会向文件系统提交任何更改。
目录 |
参数
| p | - | 目录条目将引用的文件系统对象的路径 |
| ec | - | 非抛出重载中用于错误报告的输出参数 |
返回值
(无)
异常
任何未标记为
noexcept
的重载在内存分配失败时可能抛出
std::bad_alloc
。
示例
运行此代码
#include <filesystem> #include <fstream> #include <iostream> void print_entry_info(const std::filesystem::directory_entry& entry) { if (std::cout << "条目 " << entry; not entry.exists()) { std::cout << " 在文件系统中不存在\n"; return; } std::cout << " 是 "; if (entry.is_directory()) std::cout << "目录\n"; if (entry.is_regular_file()) std::cout << "常规文件\n"; /*...*/ } int main() { std::filesystem::current_path(std::filesystem::temp_directory_path()); std::filesystem::directory_entry entry{std::filesystem::current_path()}; print_entry_info(entry); std::filesystem::path name{"cppreference.html"}; std::ofstream{name} << "C++"; std::cout << "entry.assign();\n"; entry.assign(entry/name); print_entry_info(entry); std::cout << "remove(entry);\n"; std::filesystem::remove(entry); print_entry_info(entry); // 条目仍包含旧的"状态" std::cout << "entry.assign();\n"; entry.assign(entry); // 或直接调用 entry.refresh() print_entry_info(entry); }
可能的输出:
条目 "/tmp" 是目录 entry.assign(); 条目 "/tmp/cppreference.html" 是常规文件 remove(entry); 条目 "/tmp/cppreference.html" 是常规文件 entry.assign(); 条目 "/tmp/cppreference.html" 在文件系统中不存在
参见
|
赋值内容
(公开成员函数) |