GeezerVison is showing cpprefjp.github.io — std::basic_string_view::コンストラクタ - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月22日 22時48分36秒 (JST)
rotarymars
が更新
履歴
編集
function
<string_view>
std:: basic_string_view:: コンストラクタ (C++17)
概要
(1) : デフォルトコンストラクタ。空のbasic_string_viewオブジェクトを構築する
(2) : コピーコンストラクタ。コピー元と同じ文字列を参照する
(3) : 文字配列を受けとって、その文字配列の全体(ただしヌル文字を含む場合はそこまで)を参照する
(5) : 文字配列と長さを受けとって、文字配列strの先頭len文字を参照する
(6) : 文字のイテレータ範囲[begin, end)を参照する
(7) : 文字のレンジRを参照する
テンプレートパラメータ制約
事前条件
(3) : 範囲[str, str + Traits::length (str))が妥当であること (アクセス可能であること)
(5) : 範囲[str, str + len)が妥当であること
(6) :
効果
メンバ変数として、参照する文字配列へのポインタをconst CharT* data_、文字数をsize_type size_があるものとして、
(1) : data_ = nullptr;およびsize_ = 0;とする
(3) : data_ = str;およびsize_ = Traits::length (str);とする
(5) : data_ = str;およびsize_ = len;とする
(6) : data_ = to_address (begin);およびsize_ = end - begin;とする
(7) : data_ = ranges::data (r);およびsize_ = ranges::size (r);とする
計算量
(1), (5) : 定数時間
(3) : 文字数に対して線形時間
例外
備考
basic_string_viewのコンストラクタにtemplate<size_t N>basic_string_view(const charT (&str)[N])タイプの配列を受け取るコンストラクタが無いのは次の使い方をしたときstrのサイズがsizeof(buf)となり、それは利用者の意図しない挙動になる可能性が高いと判断されたからである。
char buf [ 128 ];
snprintf ( buf , sizeof ( buf ), "abc" );
string_view str ( buf );
例
出力
(2) : Hello World
(3) : Hello World
(5) : Hello
(6) : Hello
(7) : size = 7
バージョン
言語
処理系
参照