23.3 String view classes [string.view]

編集

23.3.1 General [string.view.general]

編集
  1. 基本概要
    クラステンプレートbasic_string_viewは、位置0に最初の要素を持つ、charのような(23.1で定義される)オブジェクトの連続する定数シーケンスを参照できるオブジェクトを記述します。23.3の残りの部分では、basic_string_viewオブジェクトに保持されるcharのようなオブジェクトの型をcharTとします。
  2. 注意事項
    ライブラリは、const charT*およびstd::basic_string<charT, ...>からstd::basic_string_view<charT, ...>への暗黙の変換を提供しており、ユーザーコードが文字のシーケンスを期待する場所でテンプレート化されていないパラメータとしてstd::basic_string_view<charT>のみを受け入れることができます。ユーザー定義の型は、自分自身の暗黙の変換をstd::basic_string_view<charT>に定義して、これらの関数と相互運用することができます。
    このことにより、basic_string_viewは、文字列を受け入れる多くの関数で柔軟に使用できるようになり、std::stringオブジェクトやCスタイルの文字列リテラルを簡単に渡すことができます。

23.3.2 Header <string_view> synopsis [string.view.synop]

編集

<string_view>ヘッダーには、以下のような内容が含まれています。

namespace std {
    // 23.3.3, class template basic_string_view
    template<class charT, class traits = char_traits<charT>>
    class basic_string_view;

    // 23.3.7, typedef names for common character types
    using string_view    = basic_string_view<char>;
    using u16string_view = basic_string_view<char16_t>;
    using u32string_view = basic_string_view<char32_t>;
    using wstring_view   = basic_string_view<wchar_t>;

    // 23.3.8, erase and erase_if
    template<class charT, class traits>
    constexpr basic_string_view<charT, traits> erase(
        basic_string_view<charT, traits> sv,
        charT c
    );
    template<class charT, class traits, class UnaryPredicate>
    constexpr basic_string_view<charT, traits> erase_if(
        basic_string_view<charT, traits> sv,
        UnaryPredicate p
    );
}
basic_string_view
このテンプレートクラスは、charのようなオブジェクトの連続するシーケンスを参照するためのもので、指定されたcharT型とtraitsを使用します。
通常の文字型のための型エイリアス
string_view
char型の基本的なstring_viewです。
u16string_view
char16_t型の基本的なstring_viewです。
u32string_view
char32_t型の基本的なstring_viewです。
wstring_view
wchar_t型の基本的なstring_viewです。
eraseerase_if
erase
特定の文字を削除するための関数です。
erase_if
条件に一致する文字を削除するための関数です。

このように、<string_view>ヘッダーは、文字列の読み取り専用のビューを提供し、std::stringやCスタイルの文字列と相互運用性を持つ軽量な方法を提供します。これにより、コピーを作成せずに文字列を効率的に操作することができます。