Namespaces
Variants

Strings library

From cppreference.net

목차

문자

C++ 표준 라이브러리에서 문자 는 순차적으로 처리될 때 텍스트를 표현할 수 있는 객체입니다.

이 용어는 character types 의 객체뿐만 아니라, strings 라이브러리 및 다음 라이브러리들에서 명시된 정의를 제공하는 타입으로 표현될 수 있는 모든 값을 의미합니다:

(C++11부터)

문자열 라이브러리 및 정규 표현식 라이브러리 (C++11부터) 에서, 문자는 오직 문자 유사 타입(char-like types) , 즉 다음 요구사항들을 만족하는 비배열 타입들만 가능합니다: PODType (C++20까지) TrivialType StandardLayoutType (C++20부터) (C++26까지) TriviallyCopyable StandardLayoutType (C++26부터) .

모든 char-like 타입 T 에 대해, std:: is_trivially_default_constructible_v < T > true 입니다.

(since C++26)

따라서 문자는 문자열 라이브러리 및 정규 표현식 라이브러리 (since C++11) 에서 char-like objects 라고도 불립니다.

일부 표준 라이브러리 구성 요소는 문자 컨테이너 타입 을 허용합니다. 이들 또한 개별 문자를 표현하는 데 사용되는 타입입니다. 이러한 타입들은 std::char_traits 의 템플릿 인자 중 하나와 std::char_traits 를 사용하는 클래스 템플릿들에 사용됩니다.

라이브러리 구성 요소

C++ 문자열 라이브러리는 다음 구성 요소들을 포함합니다:

문자 특성

많은 문자 관련 클래스 템플릿들(예: std::basic_string )은 해당 의미론의 정의를 완성하기 위해 관련된 타입들과 함수들의 집합이 필요합니다. 이러한 타입들과 함수들은 각 템플릿에서 사용되는 템플릿 매개변수 Traits 내에서 멤버 typedef 이름들과 함수들로 제공됩니다. 이러한 의미론을 완성할 수 있는 클래스들은 CharTraits 입니다.

문자열 라이브러리는 std::char_traits 클래스 템플릿을 제공하며, 이는 std::basic_string std::basic_string_view (C++17부터) 에 대한 타입과 함수들을 정의합니다.

다음 특수화들이 정의되어 있으며, 이들은 모두 CharTraits 요구 사항을 충족합니다:

헤더 파일에 정의됨 <string>
template <> class char_traits < char > ;
template <> class char_traits < wchar_t > ;
template <> class char_traits < char8_t > ;
(C++20부터)
template <> class char_traits < char16_t > ;
(C++11부터)
template <> class char_traits < char32_t > ;
(C++11부터)

사용자 정의 문자 컨테이너 타입이 std::basic_string std::basic_string_view (C++17부터) 에 사용될 때, 해당하는 문자 특성 클래스( std::char_traits 의 특수화일 수 있음)도 제공해야 합니다.

문자열 클래스 ( std::string 등)

클래스 템플릿 std::basic_string 는 문자 시퀀스가 조작되고 저장되는 방식을 일반화합니다. 문자열 생성, 조작 및 소멸은 모두 편리한 클래스 메서드와 관련 함수 집합에 의해 처리됩니다.

자주 사용되는 타입들을 위해 std::basic_string 의 여러 특수화 버전이 제공됩니다:

헤더에 정의됨 <string>
타입 정의
std::string std:: basic_string < char >
std::wstring std:: basic_string < wchar_t >
std::u8string (C++20 이후) std:: basic_string < char8_t >
std::u16string (C++11 이후) std:: basic_string < char16_t >
std::u32string (C++11 이후) std:: basic_string < char32_t >

문자열 뷰 클래스 ( std::string_view 등) (C++17부터)

클래스 템플릿 std::basic_string_view std::basic_string 의 인터페이스와 유사한 인터페이스를 사용하여 문자열 또는 문자열의 일부에 대한 읽기 전용 접근을 제공하는 경량 객체입니다.

일반적으로 사용되는 타입들을 위해 std::basic_string_view 의 여러 특수화 버전이 제공됩니다:

헤더 파일에 정의됨 <string_view>
타입 정의
std::string_view std:: basic_string_view < char >
std::wstring_view std:: basic_string_view < wchar_t >
std::u8string_view (C++20부터) std:: basic_string_view < char8_t >
std::u16string_view std:: basic_string_view < char16_t >
std::u32string_view std:: basic_string_view < char32_t >

관련 라이브러리

텍스트 처리 라이브러리 는 지역화, 문자열 변환 (예: std::toupper ), 문자 분류 함수 (예: std::isspace ), 그리고 텍스트 인코딩 인식 ( std::text_encoding )을 지원합니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 1170 C++98 char-like types could be array types prohibited

참고 항목

C 문서 for Strings library