std:: basic_string_view
|
定義先ヘッダ
<string_view>
|
||
|
template
<
class
CharT,
|
(C++17以降) | |
クラステンプレート
basic_string_view
は、位置ゼロから始まる定数連続
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
と同じ型を指していなければ、プログラムは不適格となる。
|
ネストされた型
| 型 | 定義 | ||||
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
は同じ型です。これは、string viewが定数文字シーケンスへのビューであるためです。
Container
のイテレータ型に対するすべての要件は、
basic_string_view
の
iterator
型および
const_iterator
型にも同様に適用されます。
データメンバ
| メンバー | 説明 |
const_pointer
data_
|
基となるシーケンスへのポインタ
( 説明専用メンバーオブジェクト* ) |
size_type
size_
|
文字数
( 説明専用メンバーオブジェクト* ) |
メンバー関数
コンストラクタと代入 |
|
basic_string_view
を構築する
(公開メンバ関数) |
|
|
ビューを代入する
(公開メンバ関数) |
|
イテレータ |
|
|
先頭へのイテレータを返す
(公開メンバ関数) |
|
|
終端へのイテレータを返す
(公開メンバ関数) |
|
|
先頭への逆方向イテレータを返す
(公開メンバ関数) |
|
|
末尾への逆方向イテレータを返す
(公開メンバ関数) |
|
要素アクセス |
|
|
指定された文字にアクセスします
(公開メンバ関数) |
|
|
境界チェック付きで指定された文字にアクセスする
(公開メンバ関数) |
|
|
最初の文字にアクセスする
(public member function) |
|
|
最後の文字にアクセスする
(公開メンバ関数) |
|
|
ビューの最初の文字へのポインタを返す
(公開メンバ関数) |
|
容量 |
|
|
文字数を返す
(公開メンバ関数) |
|
|
最大文字数を返す
(公開メンバ関数) |
|
|
ビューが空かどうかをチェックする
(公開メンバー関数) |
|
修飾子 |
|
|
先頭を前方に移動することでビューを縮小する
(公開メンバ関数) |
|
|
末尾を後方に移動することでビューを縮小します
(公開メンバ関数) |
|
|
内容を交換する
(公開メンバ関数) |
|
演算 |
|
|
文字列をコピー
(公開メンバ関数) |
|
|
部分文字列を返す
(公開メンバ関数) |
|
|
二つのビューを比較する
(公開メンバ関数) |
|
|
(C++20)
|
文字列ビューが指定された接頭辞で始まるかどうかをチェックする
(公開メンバ関数) |
|
(C++20)
|
文字列ビューが指定された接尾辞で終わるかどうかをチェックします
(公開メンバー関数) |
|
(C++23)
|
文字列ビューが指定された部分文字列または文字を含むかどうかをチェックする
(公開メンバ関数) |
|
ビュー内の文字を検索
(公開メンバ関数) |
|
|
部分文字列の最後の出現を検索
(公開メンバ関数) |
|
|
文字の最初の出現を検索
(公開メンバ関数) |
|
|
文字の最後の出現を検索
(公開メンバ関数) |
|
|
文字が存在しない最初の位置を検索
(公開メンバ関数) |
|
|
文字の最終非存在位置を検索
(公開メンバ関数) |
|
定数 |
|
|
[static]
|
特殊な値。正確な意味は文脈によって異なる
(公開静的メンバ定数) |
非メンバー関数
|
(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で導入された正式な要件以前から、既存のすべての実装においてすでに自明にコピー可能な型です。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__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
の要素へのすべてのポインター、イテレーター、
および参照が無効化される可能性がある |
関連項目
|
文字シーケンスを格納および操作する
(クラステンプレート) |
|
|
2つの文字列、文字列と
char
、または文字列と
string_view
を連結する
(関数テンプレート) |
|
|
(C++20)
|
連続したオブジェクトシーケンスに対する非所有ビュー
(クラステンプレート) |
|
(C++11)
|
リスト初期化
で作成された一時配列を参照する
(クラステンプレート) |