Namespaces
Variants

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

From cppreference.net
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부터)

현재 경로와 인수를 연결합니다

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 가 동일한 타입이 아니며, 그리고 다음 중 하나:

목차

매개변수

p - 추가할 경로
str - 추가할 문자열 또는 문자열 뷰
ptr - 추가할 널 종료 문자열의 시작 포인터
x - 추가할 단일 문자
source - std::basic_string , std::basic_string_view , 널 종료 다중 문자 문자열, 또는 널 종료 다중 문자 시퀀스를 가리키는 입력 반복자 (휴대용 형식이나 기본 형식의 경로 이름을 나타냄)
first, last - 경로 이름을 나타내는 다중 문자 시퀀스를 지정하는 LegacyInputIterator
타입 요구사항
-
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 적용 대상 게시된 동작 올바른 동작
LWG 3055 C++17 단일 문자 연결 명세가 잘못 구성됨 올바르게 구성됨
LWG 3244 C++17 Source path 가 될 수 없다는 제약 조건이 누락됨 추가됨

참고 항목

디렉토리 구분자와 함께 경로에 요소를 추가함
(public member function)
(C++17)
디렉토리 구분자와 함께 두 경로를 연결함
(function)