Spec-Zone.ru › C++

std::filesystem::path::operator=

path& operator=( const path& p );
(1) (начиная с C++17)
path& operator=( path&& p ) noexcept;
(2) (начиная с C++17)
path& operator=( string_type&& source );
(3) (начиная с C++17)
template< class Source >
path& operator=( const Source& source );
(4) (начиная с C++17)
1) Заменяет содержимое *this путём, представления в нативном и общем форматах которого совпадают с соответствующими представлениями p.
2) Заменяет содержимое *this путём, представления в нативном и общем форматах которого совпадают с соответствующими представлениями p, возможно, используя семантику перемещения: p остаётся в допустимом, но неуточнённом состоянии.
3) Заменяет содержимое *this новым значением пути, сконструированным из source в определяемом формате; исходное значение остаётся в допустимом, но неуточнённом состоянии. Эквивалентно assign(std::move(source)).
4) Заменяет содержимое *this новым значением пути, сконструированным из source в определяемом формате, как если бы использовалась перегрузка (4) конструктора path. Эквивалентно assign(source).

Перегрузка (4) участвует в разрешении перегрузки, только если Source и path имеют разные типы и выполняется одно из следующих условий:

  • Source является специализацией std::basic_string или std::basic_string_view, либо
  • std::iterator_traits<std::decay_t<Source>>::value_type корректно и обозначает тип символа кодировки, возможно квалифицированный как const (char, char8_t, (начиная с C++20)char16_t, char32_t или wchar_t).

Параметры

p - путь для присваивания
source - std::basic_string, std::basic_string_view, указатель на строку символов/широких символов с завершающим нулём или входной итератор, указывающий на последовательность символов/широких символов с завершающим нулём. Тип символа должен быть одним из следующих: char, char8_t, (начиная с C++20)char16_t, char32_t, wchar_t

Возвращаемое значение

*this

Пример

#include <filesystem>
namespace fs = std::filesystem;

int main()
{
    fs::path p = "C:/users/abcdef/AppData/Local";
    p = p / "Temp"; // move assignment
    const wchar_t* wstr = L"D:/猫.txt";
    p = wstr; // assignment from a source
}

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.

DR Применяется к Опубликованное поведение Исправленное поведение
LWG 3244 C++17 отсутствовало ограничение, запрещающее Source быть path добавлено

См. также

assign
присваивает содержимое
(открытая функция-член)
(конструктор)
создаёт path
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/path/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API