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 , (C++20부터) char16_t , char32_t , 또는 wchar_t )을 나타내는 경우.
목차 |
매개변수
| 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) |