Programming/Modern c++

std::string_view

BiniU 2022. 6. 13. 22:32

 

String view는 C++ 17부터 지원한다.

 

 

[Background]

string 타입 변수를 읽기만 하고 수정하지 않는 함수가 있다고 하자.

C++17 이전에는 이 함수의 parameter type을 쉽게 결정할 수 없었다. 

 

왜냐하면 string은 char[], char*, std::string 과 같이 종류가 다양하기 때문이다. 

이런 문제를 해결하기 위해서 도입된 것이 string_view type이다.

 

 

 

[string_view]

▶ string_view는 대부분 pass-by-value로 전달한다.

string에 대한 pointer와 길이만 가지고 있기 때문에 복사하는데 오버헤드가 적기 때문이다.

 

▶ string_view를 사용하면 함수를 호출하는 부분에서 복사 연산이 발생하지 않는다.

 

▶ 따라서 read-only string을 받는 function은 const std::string&, const char* 대신 std::string_view를 사용한다.

 

▶ 실제 string을 생성할 때는 string_view::data()로 생성해야 한다. 

 

 

 

반응형