관리 메뉴

기억을 위한 기록들

[CPP] std::string과 std::string_view 본문

C & CPP

[CPP] std::string과 std::string_view

에드윈H 2023. 12. 5. 11:04

std::string:

  • std::string은 가변 길이의 문자열을 나타내는 클래스
  • 문자열 데이터를 동적으로 할당하고 관리합니다. 메모리는 자동으로 확장 및 축소됩니다.
  • 문자열의 길이 정보를 내부에 저장하며, 문자열의 모든 연산 (추출, 수정, 추가 등)을 지원합니다.
  • 문자열을 복사하거나 이동하는 등의 작업에 관련된 메모리 할당 및 해제가 수반됩니다.

 

std::string_view:

  • std::string_view는 문자열의 일부 또는 전체에 대한 읽기 전용(view)을 나타내는 클래스입니다.
  • 메모리를 소유하지 않고, 기존의 문자열 데이터를 참조합니다. 따라서 복사나 메모리 할당이 없습니다.
  • 문자열의 길이 정보를 내부에 저장하지 않고, 기존 문자열의 일부를 가리킵니다.
  • 주로 문자열 조각에 대한 빠른 읽기 연산이 필요한 경우에 사용됩니다.

 

 

차이점

 

  • std::string은 문자열을 소유하고 동적으로 할당된 메모리를 사용합니다.
  • std::string_view는 문자열을 소유하지 않으며, 기존의 문자열 데이터를 참조합니다.
  • std::string_view는 읽기 전용이므로, 데이터를 수정할 수 없습니다. std::string은 수정이 가능합니다.
  • std::string_view는 주로 문자열 조각에 대한 경량화된 뷰를 제공하는데 사용되며, 특히 함수 매개변수로 문자열을 전달할 때 유용합니다.
  • C++17 이상에서 std::string_view가 도입