std:: basic_string_view
|
헤더에 정의됨
<string_view>
|
||
|
template
<
class
CharT,
|
(C++17부터) | |
클래스 템플릿
basic_string_view
는 위치 0에서 시작하는 상수 연속
CharT
시퀀스를 참조할 수 있는 객체를 설명합니다.
basic_string_view
str
에 대해,
str
의 요소에 대한 포인터, 반복자, 참조는
[
str.
data
(
)
,
str.
data
(
)
+
str.
size
(
)
)
범위 내의 포인터를 무효화하는 연산이 수행될 때 무효화됩니다.
|
|
(C++23부터) |
일반적인 문자 타입에 대한 여러 typedef가 제공됩니다:
|
헤더에 정의됨
<string_view>
|
|
| 타입 | 정의 |
| std::string_view (C++17) | std :: basic_string_view < char > |
| std::wstring_view (C++17) | std :: basic_string_view < wchar_t > |
| std::u8string_view (C++20) | std :: basic_string_view < char8_t > |
| std::u16string_view (C++17) | std :: basic_string_view < char16_t > |
| std::u32string_view (C++17) | std :: basic_string_view < char32_t > |
목차 |
템플릿 매개변수
| CharT | - | 문자 타입 |
| Traits | - |
CharTraits
문자 타입에 대한 연산을 지정하는 클래스.
std::basic_string
과 마찬가지로,
Traits::char_type
은
CharT
와 동일한 타입을 지칭해야 하며, 그렇지 않을 경우 프로그램은 ill-formed입니다.
|
중첩 타입
| 유형 | 정의 | ||||
traits_type
|
Traits
|
||||
value_type
|
CharT
|
||||
pointer
|
CharT * | ||||
const_pointer
|
const CharT * | ||||
reference
|
CharT & | ||||
const_reference
|
const CharT & | ||||
const_iterator
|
구현 정의 상수
LegacyRandomAccessIterator
,
의
|
||||
iterator
|
const_iterator
|
||||
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > | ||||
reverse_iterator
|
const_reverse_iterator
|
||||
size_type
|
std::size_t | ||||
difference_type
|
std::ptrdiff_t |
참고:
iterator
와
const_iterator
는 문자열 뷰가 상수 문자 시퀀스를 참조하기 때문에 동일한 타입입니다.
Container
에 대한 모든 반복자 타입 요구사항은
basic_string_view
의
iterator
와
const_iterator
타입에도 동일하게 적용됩니다.
데이터 멤버
| 멤버 | 설명 |
const_pointer
data_
|
기반 시퀀스에 대한 포인터
( 설명 전용 멤버 객체* ) |
size_type
size_
|
문자 개수
( 설명 전용 멤버 객체* ) |
멤버 함수
생성자와 할당 |
|
basic_string_view
를 생성합니다
(public member function) |
|
|
뷰를 할당함
(public member function) |
|
반복자 |
|
|
시작 부분에 대한 반복자를 반환합니다
(public member function) |
|
|
끝에 대한 반복자를 반환합니다
(public member function) |
|
|
역방향 반복자를 시작 부분으로 반환합니다
(public member function) |
|
|
끝을 가리키는 역방향 반복자를 반환합니다
(public member function) |
|
요소 접근 |
|
|
지정된 문자에 접근
(public member function) |
|
|
지정된 문자에 경계 검사와 함께 접근합니다
(public member function) |
|
|
첫 번째 문자에 접근
(public member function) |
|
|
마지막 문자에 접근
(public member function) |
|
|
뷰의 첫 번째 문자에 대한 포인터를 반환합니다
(public member function) |
|
용량 |
|
|
문자 수를 반환합니다
(public member function) |
|
|
최대 문자 수를 반환합니다
(public member function) |
|
|
뷰가 비어 있는지 확인합니다
(public member function) |
|
수정자 |
|
|
시작 지점을 앞으로 이동하여 뷰를 축소합니다
(public member function) |
|
|
뷰의 끝을 뒤로 이동시켜 뷰를 축소합니다
(public member function) |
|
|
내용을 교환합니다
(public member function) |
|
연산 |
|
|
문자 복사
(public member function) |
|
|
부분 문자열을 반환합니다
(public member function) |
|
|
두 뷰를 비교합니다
(public member function) |
|
|
(C++20)
|
문자열 뷰가 주어진 접두사로 시작하는지 확인합니다
(public member function) |
|
(C++20)
|
문자열 뷰가 주어진 접미사로 끝나는지 확인합니다
(public member function) |
|
(C++23)
|
문자열 뷰가 주어진 부분 문자열이나 문자를 포함하는지 확인합니다
(public member function) |
|
뷰에서 문자 찾기
(public member function) |
|
|
부분 문자열의 마지막 발생 위치 찾기
(public member function) |
|
|
문자들의 첫 번째 발생 위치 찾기
(public member function) |
|
|
문자들의 마지막 발생 위치 찾기
(public member function) |
|
|
문자 없음을 처음 찾음
(public member function) |
|
|
마지막으로 문자가 존재하지 않는 위치 찾기
(public member function) |
|
상수 |
|
|
[static]
|
특수 값. 정확한 의미는 문맥에 따라 다름
(public static member constant) |
비멤버 함수
|
(C++17)
(C++20에서 제거됨)
(C++20에서 제거됨)
(C++20에서 제거됨)
(C++20에서 제거됨)
(C++20에서 제거됨)
(C++20)
|
두 문자열 뷰를 사전식으로 비교함
(함수 템플릿) |
입력/출력 |
|
|
(C++17)
|
문자열 뷰에 대한 스트림 출력을 수행함
(함수 템플릿) |
리터럴
|
인라인 네임스페이스에 정의됨
std::literals::string_view_literals
|
|
|
(C++17)
|
문자 배열 리터럴의 string view를 생성함
(함수) |
헬퍼 클래스
|
(C++17)
(C++17)
(C++20)
(C++17)
(C++17)
|
문자열 뷰에 대한 해시 지원
(클래스 템플릿 특수화) |
헬퍼 템플릿
|
template
<
class
CharT,
class
Traits
>
inline
constexpr
bool
|
(C++20부터) | |
이
ranges::enable_borrowed_range
특수화는
basic_string_view
가
borrowed_range
를 만족하도록 합니다.
|
template
<
class
CharT,
class
Traits
>
inline
constexpr
bool
|
(C++20 이후) | |
이 특수화는
ranges::enable_view
가
basic_string_view
가
view
를 만족하도록 합니다.
추론 가이드 |
(C++20부터) |
참고 사항
프로그래머의 책임은
std::string_view
가 가리키는 문자 배열보다 더 오래 생존하지 않도록 보장하는 것입니다:
std::string_view good{"a string literal"}; // "좋은" 경우: `good`은 정적 배열을 가리킵니다. // 문자열 리터럴은 영구 데이터 저장소에 상주합니다. std::string_view bad{"a temporary string"s}; // "나쁜" 경우: `bad`는 매달린 포인터를 보유합니다. 왜냐하면 std::operator""s에 의해 생성된 // std::string 임시 객체는 문장의 끝에서 소멸되기 때문입니다.
std::basic_string_view
의 특수화들은 C++23에서 공식적으로 요구사항이 도입되기 전에도 모든 기존 구현에서 이미 사소하게 복사 가능한(trivially copyable) 타입들입니다.
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_string_view
|
201606L
|
(C++17) |
std::string_view
|
201803L
|
(C++20) | ConstexprIterator | |
__cpp_lib_string_contains
|
202011L
|
(C++23) |
contains
|
예제
출력:
▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─ ▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─ ▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄ ▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀ ▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─ ▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─ ▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄ ▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀
결함 보고서
다음 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3203 | C++17 |
멤버 함수에서 반환된 포인터, 반복자 및 참조만
무효화될 수 있음
basic_string_view
|
basic_string_view
요소에 대한 모든 포인터, 반복자 및 참조
무효화될 수 있음 |
참고 항목
|
문자 시퀀스를 저장하고 조작함
(클래스 템플릿) |
|
|
두 문자열, 문자열과
char
, 또는 문자열과
string_view
를 연결함
(함수 템플릿) |
|
|
(C++20)
|
연속된 객체 시퀀스에 대한 비소유 뷰
(클래스 템플릿) |
|
(C++11)
|
목록 초기화
에서 생성된 임시 배열을 참조함
(클래스 템플릿) |