std::filesystem::path:: append, std::filesystem::path:: operator/=
|
path
&
operator
/
=
(
const
path
&
p
)
;
|
(1) | (начиная с C++17) |
|
template
<
class
Source
>
path & operator / = ( const Source & source ) ; |
(2) | (начиная с C++17) |
|
template
<
class
Source
>
path & append ( const Source & source ) ; |
(3) | (начиная с C++17) |
|
template
<
class
InputIt
>
path & append ( InputIt first, InputIt last ) ; |
(4) | (начиная с C++17) |
path::preferred_separator
к общему формату
*
this
.
// Где "//host" является корневым именем path("//host") / "foo" // результат: "//host/foo" (добавление с разделителем) path("//host/") / "foo" // результат также "//host/foo" (добавление без разделителя) // В POSIX, path("foo") / "" // результат: "foo/" (добавление) path("foo") / "/bar"; // результат: "/bar" (замена) // В Windows, path("foo") / "C:/bar"; // результат: "C:/bar" (замена) path("foo") / "C:"; // результат: "C:" (замена) path("C:") / ""; // результат: "C:" (добавление без разделителя) path("C:foo") / "/bar"; // даёт "C:/bar" (удаляет относительный путь, затем добавляет) path("C:foo") / "C:bar"; // даёт "C:foo/bar" (добавляет, опуская корневое имя p)
(2)
и
(3)
участвуют в разрешении перегрузки только если
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 , строка с нулевым завершителем или входной итератор, указывающий на последовательность многобайтовых символов с нулевым завершителем, которая представляет имя пути (в переносимом или собственном формате) |
| first, last | - | пара LegacyInputIterator s , которая задает последовательность многобайтовых символов, представляющую имя пути |
| Требования к типам | ||
-
InputIt
должен удовлетворять требованиям
LegacyInputIterator
.
|
||
-
InputIt
должен быть одним из типов кодированных символов (
char
,
wchar_t
,
char16_t
и
char32_t
).
|
||
Возвращаемое значение
* this
Исключения
Может выбросить std:: bad_alloc при неудачном выделении памяти.
Примечания
Эти функции эффективно дают приблизительное значение пути аргумента p в среде, где * this является стартовой директорией.
Пример
Вывод создан в Windows.
#include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::path p1 = "C:"; p1 /= "Users"; // does not insert a separator std::cout << "\"C:\" / \"Users\" == " << p1 << '\n'; p1 /= "batman"; // inserts fs::path::preferred_separator, '\' on Windows std::cout << "\"C:\" / \"Users\" / \"batman\" == " << p1 << '\n'; }
Возможный вывод:
"C:" / "Users" == "C:Users" "C:" / "Users" / "batman" == "C:Users\\batman"
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3244 | C++17 |
ограничение, что
Source
не может быть
path
отсутствовало
|
добавлено |
Смотрите также
|
объединяет два пути без добавления разделителя директорий
(публичная функция-член) |
|
|
(C++17)
|
объединяет два пути с разделителем директорий
(функция) |