C++17 이후부터 등장한 타입이다.
c_str 메소드가 없는것을 빼면 std::string과 인터페이스가 동일하다. 오히려 문자열을 축소시킬 수 있도록 remove_prefix, remove_suffix 메소드가 추가로 제공된다.
string_view는 매개변수로 전달 시 const string&과 달리 오버헤드가 없다. 정확히는 없다기 보다 값으로 전달하지만 스트링에 대한 포인터와 길이만 갖고 있기 때문에 오버헤드가 매우 적다.
그러니 읽기 전용 스트링을 함수의 매개변수로 받는 경우에는 const string&, const char* 대신 string_view를 사용하도록 하자.
string str = "Hello";
string_view sv = " world";
auto result = str + sv; // compile error
둘을 결합시키고 싶다면 data 메소드를 사용하면 된다.
string 리터럴을 string_literals::s를 통해 만들 수 있는 것처럼 string_view 리터럴도 string_view_literals::sv를 통해 만들 수 있다.
'C++ > 기타' 카테고리의 다른 글
default 키워드에 의한 can't delete incomplete type 에러 (0) | 2024.05.28 |
---|---|
라이브러리 업데이트 자동 적용 (0) | 2023.05.16 |
이니셜라이저 리스트 직접 초기화, 복제 리스트 초기화 (0) | 2023.03.08 |
[algorithm] sort, stable_sort (0) | 2022.08.03 |
[algorithm] find, find_if (0) | 2022.08.03 |