std::basic_string_view<CharT,Traits>::basic_string_view
提供: cppreference.com
< cpp | string | basic string view
constexpr basic_string_view() noexcept; | (1) | (C++17以上) |
constexpr basic_string_view(const basic_string_view& other) noexcept = default; | (2) | (C++17以上) |
constexpr basic_string_view(const CharT* s, size_type count); | (3) | (C++17以上) |
constexpr basic_string_view(const CharT* s); | (4) | (C++17以上) |
template<class It, class End> constexpr basic_string_view(It first, End last); | (5) | (C++20以上) |
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
が実際には contiguous_iterator をモデル化しない場合、または End
が実際には It
に対する sized_sentinel_for をモデル化しない場合、動作は未定義です。 構築後、 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
の長さに比例。[編集] 例
Run this code
#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'; }
出力:
Foo Bar 5
[編集] 関連項目
ビューを代入します (パブリックメンバ関数) |