Spec-Zone.ru › C++

std::filesystem::path::concat, std::filesystem::path::operator+=

path& operator+=( const path& p );
(1) (since C++17)
path& operator+=( const string_type& str );
path& operator+=( std::basic_string_view<value_type> str );
(2) (since C++17)
path& operator+=( const value_type* ptr );
(3) (since C++17)
path& operator+=( value_type x );
(4) (since C++17)
template< class CharT >
path& operator+=( CharT x );
(5) (since C++17)
template< class Source >
path& operator+=( const Source& source );
(6) (since C++17)
template< class Source >
path& concat( const Source& source );
(7) (since C++17)
template< class InputIt >
path& concat( InputIt first, InputIt last );
(8) (since C++17)

Присоединяет текущий путь к аргументу

1-3,6,7) Присоединяет path(p).native() к имени пути, хранящемуся в *this в формате операционной системы. Это напрямую изменяет значение native() и может быть не переносимо между операционными системами.
4,5) То же, что и return *this += std::basic_string_view(&x, 1);.
8) То же, что и return *this += path(first, last);.

(6) и (7) участвуют в разрешении перегрузки только если Source и path не являются одним и тем же типом, и либо:

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

Параметры

p - путь для присоединения
str - строка или представление строки для присоединения
ptr - указатель на начало null-терминированной строки для присоединения
x - одиночный символ для присоединения
source - std::basic_string, std::basic_string_view, null-терминированная строка с несколькими символами или итератор входных данных, указывающий на null-терминированную последовательность с несколькими символами, представляющая имя пути (в переносимом или родном формате)
first, last - пара итераторов LegacyInputIterators, которые задают последовательность с несколькими символами, которая представляет имя пути
Требования к типу
-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; // an empty path
    p1 += "var"; // does not insert a separator
    std::cout << R"("" + "var" --> )" << p1 << '\n';
    p1 += "lib"; // does not insert a separator
    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 Применён к Поведение, как опубликовано Правильное поведение
LWG 3055 C++17 определение конкатенации одиночного символа было некорректным сделано корректным
LWG 3244 C++17 ограничение, что Source не может быть path отсутствовало добавлено

См. также

appendoperator/=
присоединяет элементы к пути с разделителем каталогов
(публичный член-функция)
operator/
(C++17)
конкатенирует два пути с разделителем каталогов
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/path/concat

Spec-Zone.ru

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