C++ 개념 정리

14. string_view

CE : 하랑 2026. 1. 17. 22:32

 

string_view 사용하는 이유?

(1) string_view는 내부적으로 문자열에 대한 pointer와 길이만 가지므로 임시객체를 생성하지 않고 문자열을 생성할 수 있습니다.

 

(2) 인자로 넘겨 받는 경우

void Test(const std::string& sInName)
{
}
void Test(std::string_view sInName)
{
}

컴파일러가 문자열을 받으면 string 생성자로 보내서 임시객체를 만드는 것 입니다.

그리고 이 임시객체를 함수 인자로 전달을 하는 것 입니다. -> 문자열의 복사본도 힙에 생성하게 됩니다.

 


std::vector<char> 같은 느낌 -> 복사본이 생기면 그안에서의 동적할당을 해 부담이 커짐


 

string_view는 참조가 아니라 값 입니다. string_view를 참조가 아니라 값(call by value)으로 받았으니까

객체를 만듭니다. 하지만 이 객체는 멤버가 2개 밖에 없습니다. 문자열 포인터와 길이 입니다.

문자열 주소는 복사본을 생성하지 않고 상수 메모리의 존재하는 문자열을 가리킵니다.

즉, 문자열의 복사본을 힙에 올리지 않기 때문에 성능 향상을 볼 수 있습니다.

 

std::string으로 받으면  문자열 길이가 길어질수록 복사본이 생기는것이 부담이 커진다.

string_view를 사용하면  타입의 복사본 생성 없이 값이 변하지 않으며 효율적으로 동작한다.

 

 

std:string_view -> 복사본 생성없이 그 값을 가리킴

const std::string& -> 복사본 생성을 하고 복사본을 가리킴

 


 

c_str()함수는 string class의 멤버 함수입니다.

c_str() 함수는 c++ style string을 c style string으로 변경하여 첫번째 문자(char)을 가리키는 포인터를 반환합니다.

 

'C++ 개념 정리' 카테고리의 다른 글

16. std::list  (0) 2026.01.18
15. std::map  (0) 2026.01.17
13. iterator  (0) 2026.01.17
12. std::vector  (0) 2026.01.17
11. 문자열 표준 정리  (0) 2026.01.11