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를 통해 만들 수 있다.

+ Recent posts