std::basic_string_view<CharT,Traits>::basic_string_view - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
(1) | (C++17以上) |
|
|
(2) | (C++17以上) |
|
|
(3) | (C++17以上) |
|
|
(4) | (C++17以上) |
|
|
(5) | (C++20以上) |
1) デフォルトコンストラクタ。 空の basic_string_view を構築します。 構築後、 data() は nullptr と等しくなり、 size() は 0 と等しくなります。
2) コピーコンストラクタ。 other と同じ内容のビューを構築します。 構築後、 data() は other.data() と等しくなり、 size() は other.size() と等しくなります。
3) s の指す要素から始まる文字配列の最初の count 個の文字のビューを構築します。 s はヌル文字を含むことができます。 [s, s+count) が有効な範囲でない場合 (たとえコンストラクタがこの範囲のいずれの要素にもアクセスしないとしても)、動作は未定義です。 構築後、 data() は s と等しくなり、 size() は count と等しくなります。
4) s の指すヌル終端文字列のビューを構築します。 終端のヌル文字は含まれません。 ビューの長さは Traits::length(s) によって行われたかのように決定されます。 [s, s+Traits::length(s)) が有効な範囲でない場合、動作は未定義です。 構築後、 data() は s と等しくなり、 size() は Traits::length(s) と等しくなります。
5) 範囲 [first, last) に対する basic_string_view を構築します。 [first, last) が有効な範囲でない場合、 It が実際には
をモデル化しない場合、または End が実際には It に対する
をモデル化しない場合、動作は未定義です。 構築後、 data() は std::to_address(first) と等しく、 size() は last - first と等しくなります。
このオーバーロードは、
Itが contiguous_iterator を満たし、EndがItに対する sized_sentinel_for を満たし、std::iter_value_t<It>とCharTが同じ型であり、Endが std::size_t に変換可能でない
場合にのみ、オーバーロード解決に参加します。
引数
| other | - | ビューを初期化する別のビュー |
| s | - | ビューを初期化する文字配列または C の文字列を指すポインタ |
| count | - | ビューに含める文字数 |
| first | - | シーケンスの最初の文字を指すイテレータ |
| last | - | シーケンスの最後の文字の次のイテレータまたは別の番兵 |
計算量
1-3,5) 一定。
4) s の長さに比例。
例
#include <iostream> #include <string> #include <string_view> int main() { std::wstring_view wcstr_v = L"xyzzy"; char array[3] = {'B', 'a', 'r'}; std::string_view array_v(array, std::size(array)); std::string cppstr = "Foo"; std::string_view cppstr_v(cppstr); std::cout << cppstr_v << '\n' << array_v << '\n' << wcstr_v.size() << '\n'; }
出力: