std::basic_string_view
提供: cppreference.com
ヘッダ <string_view> で定義
|
||
template< class CharT, |
(C++17以上) | |
クラステンプレート basic_string_view
は char ライクなオブジェクトの const な隣接する並びを参照するオブジェクトを表現します。 並びの最初の要素は0の位置です。
一般的な実装では2個のメンバ、 const な CharT
へのポインタとサイズのみを保持します。
一般的な文字型に対していくつかの typedef が提供されます。
ヘッダ
<string_view> で定義 | |
型 | 定義 |
std::string_view | std::basic_string_view<char> |
std::wstring_view | std::basic_string_view<wchar_t> |
std::u8string_view | std::basic_string_view<char8_t> (C++20) |
std::u16string_view | std::basic_string_view<char16_t> |
std::u32string_view | std::basic_string_view<char32_t> |
目次 |
[編集] テンプレート引数
CharT | - | 文字型 |
Traits | - | 文字型の操作を指定する CharTraits クラス。 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
|
value_type が CharT である処理系定義の const な LegacyRandomAccessIterator、ConstexprIterator (C++20以上) かつ LegacyContiguousIterator
|
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 |
ノート: 文字列ビューは const な文字型へのビューであるため、 iterator
と const_iterator
は同じ型です。
Container のイテレータ型に対するすべての要件が basic_string_view
の iterator
および const_iterator
型にも同様に適用されます。
[編集] メンバ関数
basic_string_view を構築します (パブリックメンバ関数) | |
ビューを代入します (パブリックメンバ関数) | |
イテレータ | |
先頭を指すイテレータを返します (パブリックメンバ関数) | |
終端を指すイテレータを返します (パブリックメンバ関数) | |
先頭を指す逆イテレータを返します (パブリックメンバ関数) | |
終端を指す逆イテレータを返します (パブリックメンバ関数) | |
要素アクセス | |
指定された文字にアクセスします (パブリックメンバ関数) | |
境界チェック付きで指定された文字にアクセスします (パブリックメンバ関数) | |
最初の文字にアクセスします (パブリックメンバ関数) | |
最後の文字にアクセスします (パブリックメンバ関数) | |
ビューの最初の文字へのポインタを返します (パブリックメンバ関数) | |
容量 | |
文字数を返します (パブリックメンバ関数) | |
最大文字数を返します (パブリックメンバ関数) | |
ビューが空かどうか調べます (パブリックメンバ関数) | |
変更 | |
始点を前進させることによってビューを縮小させます (パブリックメンバ関数) | |
終点を後退させるとこによってビューを縮小させます (パブリックメンバ関数) | |
内容を交換します (パブリックメンバ関数) | |
操作 | |
文字をコピーします (パブリックメンバ関数) | |
部分文字列を返します (パブリックメンバ関数) | |
2つのビューを比較します (パブリックメンバ関数) | |
(C++20) |
文字列ビューが指定された接頭辞で始まるか調べます (パブリックメンバ関数) |
(C++20) |
文字列ビューが指定された接尾辞で終わるか調べます (パブリックメンバ関数) |
ビュー内の文字を探します (パブリックメンバ関数) | |
部分文字列が現れる最後の位置を探します (パブリックメンバ関数) | |
文字が現れる最初の位置を探します (パブリックメンバ関数) | |
文字が現れる最後の位置を探します (パブリックメンバ関数) | |
文字が現れない最初の位置を探します (パブリックメンバ関数) | |
文字が現れない最後の位置を探します (パブリックメンバ関数) | |
定数 | |
[静的] |
特別な値。 正確な意味は文脈によって異なります (パブリック静的メンバ定数) |
[編集] 非メンバ関数
(C++20で削除)(C++20で削除)(C++20で削除)(C++20で削除)(C++20で削除)(C++20) |
2つの文字列ビューを辞書的に比較します (関数テンプレート) |
入出力 | |
文字列ビューのストリーム出力を行います (関数テンプレート) |
[編集] リテラル
名前空間
std::literals::string_view_literals で定義 | |
(C++17) |
文字配列リテラルの文字列ビューを作成します (関数) |
[編集] ヘルパークラス
文字列ビューに対するハッシュサポート (クラステンプレートの特殊化) |
[編集] ヘルパーテンプレート
template<class CharT, class Traits> inline constexpr bool ranges::enable_borrowed_range<std::basic_string_view<CharT, Traits>> = true; |
(C++20以上) | |
std::ranges::enable_borrowed_range のこの特殊化は basic_string_view
が borrowed_range を満たせるようにします。
template<class CharT, class Traits> inline constexpr bool ranges::enable_view<std::basic_string_view<CharT, Traits>> = true; |
(C++20以上) | |
std::ranges::enable_view のこの特殊化は basic_string_view
が view を満たせるようにします。
[編集] 推定ガイド(C++20以上)
[編集] ノート
std::string_view
が参照先の文字配列より長生きしないことを保証するのはプログラマの責任です。
std::string_view good("a string literal"); // OK、 good は静的な配列を指します。 std::string_view bad("a temporary string"s); // bad はダングリングです。