std::filesystem::directory_entry::assign
From cppreference.com
< 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 | - | ディレクトリ エントリが参照するファイルシステム オブジェクトへのパス |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] 戻り値
(なし)
[編集] 例外
noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。
1) 基盤となるOS APIエラーが発生した場合、最初のパス引数としてp、エラーコード引数としてOSのエラーコードとともに構築されたstd::filesystem::filesystem_error を投げます。
[編集] 例
このコードを実行
#include <filesystem> #include <fstream> #include <iostream> void print_entry_info(const std::filesystem::directory_entry& entry) { if (std::cout << "The entry " << entry; not entry.exists()) { std::cout << " does not exists on the file system\n"; return; } std::cout << " is "; if (entry.is_directory()) std::cout << "a directory\n"; if (entry.is_regular_file()) std::cout << "a regular file\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); // the entry still contains old "state" std::cout << "entry.assign();\n"; entry.assign(entry); // or just call entry.refresh() print_entry_info(entry); }
実行結果の例
The entry "/tmp" is a directory entry.assign(); The entry "/tmp/cppreference.html" is a regular file remove(entry); The entry "/tmp/cppreference.html" is a regular file entry.assign(); The entry "/tmp/cppreference.html" does not exists on the file system
[編集] 関連項目
| 内容を代入する (public member function) |