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
при неудачном выделении памяти.
1)
Выбрасывает
std::filesystem::filesystem_error
при ошибках в нижележащем API ОС, созданный с
p
в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
2)
Устанавливает параметр
std::
error_code
&
в код ошибки API операционной системы при сбое вызова OS API, и выполняет
ec.
clear
(
)
если ошибок не происходит.
Пример
Запустить этот код
#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" не существует в файловой системе
Смотрите также
|
присваивает содержимое
(публичная функция-член) |