모두의 코드
C++ 레퍼런스 - basic_string_view

basic_string_view

<string_view> 에 정의됨.

template <class CharT, class Traits = std::char_traits<CharT> >
class basic_string_view;

클래스 템플릿 basic_string_view 는 연속된 문자의 나열의 시작점을 가리키는 객체를 만들어줍니다.

const char *s = "abc";

쉽게 생각해서, 위의 s 의 역할을 수행하는 객체라 생각하시면 됩니다.

그렇다면, 그냥 포인터를 쓰면 될것이지 도대체 왜 굳이 basic_string_view 를 사용하냐면, 일반적인 const char* 과 같은 포인터와는 달리, basic_string_view 는 가리키는 대상의 길이 도 기억하고 있기 때문에, 사용이 매우 편리합니다.

실제로도, basic_string_view 는 보통 두 개의 멤버만 가지는데, 하나는 시작점을 가리키는 포인터(CharT*) 와 가리키는 대상의 크기 입니다.

이름에서도 알 수 있듯이 string볼 수 만 있기 때문에 가리키고 있는 문자열을 수정할 수 는 없습니다. 또한 주의할 점으로 가리키고 있는 문자열이 메모리에서 소멸되지 않도록 해야만 합니다.

std::string_view good("a string literal");  // OK. static 배열을 가리키고 있음

const char* func() {
  string s = "abc";
  return s.c_str();
}
std::string_view bad(func());  // BAD. 이미 소멸된 string 을 가리킴

basic_string_view<string_view> 헤더파일에 정의되어 있습니다.

타입

정의

std::string_view

std::basic_string_view<char>

std::wstring_view

std::basic_string_view<wchar_t>

std::u16string_view

std::basic_string_view<char16_t>

std::u32string_view

std::basic_string_view<char32_t>

템플릿 인자들

멤버 타입들

멤버 타입

정의

traits_type

Traits (템플릿 인자)

value_type

CharT (템플릿 인자)

pointer

CharT*

const_pointer

const CharT*

reference

CharT&

const_reference

const CharT&

const_iterator

CharT 를 값으로 가지는 반복자 RandomAccessIterator, ConstexprIterator, ContiguousIterator

iterator

const_iterator

reverse_iterator

const_reverse_iterator

const_reverse_iterator

std::reverse_iterator<const_iterator>

size_type

std::size_t

difference_type

std::ptrdiff_t

string_view 의 경우 문자열을 수정할 수 없기 때문에, iteratorconst_iterator 모두 같은 상수 반복자 타입입니다.

멤버 함수들

반복자 관련

참고로 string 과는 달리 string_view 의 경우 c 의 유무와 관계 없이 모두 상수 반복자 이다.

원소 접근 관련

문자열 크기 관련

문자열 관련 작업

아래 설명할 문자열 관련 작업들은 문자열을 직접적으로 수정하지 않는다.

문자열 검색 관련

상수

npos : 사용 예에 따라 의미가 달라짐.

프로필 사진 없음
댓글에 글쓴이에게 큰 힘이 됩니다