std::filesystem::path:: concat, std::filesystem::path:: operator+=
|
path
&
operator
+
=
(
const
path
&
p
)
;
|
(1) | (начиная с C++17) |
|
path
&
operator
+
=
(
const
string_type
&
str
)
;
path & operator + = ( std:: basic_string_view < value_type > str ) ; |
(2) | (начиная с C++17) |
|
path
&
operator
+
=
(
const
value_type
*
ptr
)
;
|
(3) | (начиная с C++17) |
|
path
&
operator
+
=
(
value_type x
)
;
|
(4) | (начиная с C++17) |
|
template
<
class
CharT
>
path & operator + = ( CharT x ) ; |
(5) | (начиная с C++17) |
|
template
<
class
Source
>
path & operator + = ( const Source & source ) ; |
(6) | (начиная с C++17) |
|
template
<
class
Source
>
path & concat ( const Source & source ) ; |
(7) | (начиная с C++17) |
|
template
<
class
InputIt
>
path & concat ( InputIt first, InputIt last ) ; |
(8) | (начиная с C++17) |
Объединяет текущий путь и аргумент
(6)
и
(7)
участвуют в разрешении перегрузки только если
Source
и
path
не являются одним и тем же типом, и выполняется одно из условий:
-
Sourceявляется специализацией std::basic_string или std::basic_string_view , или - std:: iterator_traits < std:: decay_t < Source >> :: value_type является валидным и обозначает возможно const-квалифицированный символьный тип кодировки ( char , char8_t , (since C++20) char16_t , char32_t , или wchar_t ).
Содержание |
Параметры
| p | - | путь для добавления |
| str | - | строка или string view для добавления |
| ptr | - | указатель на начало null-терминированной строки для добавления |
| x | - | одиночный символ для добавления |
| source | - | std::basic_string , std::basic_string_view , null-терминированная многобайтовая строка, или входной итератор, указывающий на null-терминированную многобайтовую последовательность, которая представляет имя пути (в портируемом или нативном формате) |
| first, last | - | пара LegacyInputIterator s , которая определяет многобайтовую последовательность, представляющую имя пути |
| Требования к типам | ||
-
InputIt
должен удовлетворять требованиям
LegacyInputIterator
.
|
||
-
InputIt
должен быть одним из кодированных символьных типов (
char
,
wchar_t
,
char16_t
и
char32_t
).
|
||
-
CharT
должен быть одним из кодированных символьных типов (
char
,
wchar_t
,
char16_t
и
char32_t
).
|
||
Возвращаемое значение
* this
Исключения
Может выбросить std:: bad_alloc при неудачном выделении памяти.
Примечания
В отличие от append() или operator/= , дополнительные разделители директорий никогда не добавляются.
Пример
#include <filesystem> #include <iostream> #include <string> int main() { std::filesystem::path p1; // пустой путь p1 += "var"; // не вставляет разделитель std::cout << R"("" + "var" --> )" << p1 << '\n'; p1 += "lib"; // не вставляет разделитель std::cout << R"("var" + "lib" --> )" << p1 << '\n'; auto str = std::string{"1234567"}; p1.concat(std::begin(str) + 3, std::end(str) - 1); std::cout << "p1.concat --> " << p1 << '\n'; }
Вывод:
"" + "var" --> "var" "var" + "lib" --> "varlib" p1.concat --> "varlib456"
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3055 | C++17 | спецификация конкатенации одного символа была некорректно сформирована | сделана корректно сформированной |
| LWG 3244 | C++17 |
ограничение, что
Source
не может быть
path
отсутствовало
|
добавлено |
Смотрите также
|
добавляет элементы к пути с разделителем директории
(публичная функция-член) |
|
|
(C++17)
|
объединяет два пути с разделителем директории
(функция) |