std::experimental::basic_string_view<CharT,Traits>::basic_string_view

constexpr basic_string_view() noexcept;
(1) (库基础 TS)
constexpr basic_string_view( const basic_string_view& other ) noexcept = default;
(2) (库基础 TS)
template<class Allocator>
basic_string_view( const std::basic_string<CharT, Traits, Allocator>& str ) noexcept;
(3) (库基础 TS)
constexpr basic_string_view( const CharT* s, size_type count );
(4) (库基础 TS)
constexpr basic_string_view( const CharT* s );
(5) (库基础 TS)
1) 默认构造函数。构造空 basic_string_view
2) 复制构造函数。构造与 other 内容相同的视图。
3) 构造以 str.data() 所指向的元素开始的数组的前 str.size() 个字符的视图。
4) 构造以 s 指向的元素开始的数组的前 count 个字符的视图。s 可以包含空字符。若 [ss + count) 不是有效范围则其行为未定义(即便该构造函数并不访问范围中的任何元素也是如此)。
5) 构造由 s 指向的空终止字符串的视图,不包括终止的空字符。视图的长度如同以 Traits::length(s) 确定。若 [ss + Traits::length(s)) 不是有效范围则其行为未定义(即便该构造函数并不访问范围中的任何元素也是如此)。

参数

other - 用以初始化视图的另一个视图
str - 用以初始化视图的 C++ 字符串对象
s - 指向字符数组或 C 字符串的指针,用以初始化视图
count - 视图中要包括的字符数量

异常

4,5) 不抛出。

复杂度

1-4) 常数。
5)s 的长度呈线性。

示例

#include <experimental/string_view>
#include <iostream>
 
int main()
{
    std::string cppstr = "Foo";
    char array[3] = {'B', 'a', 'r'};
 
    std::experimental::string_view cppstr_v(cppstr);
    std::experimental::string_view array_v(array, sizeof array);
 
    std::experimental::wstring_view wcstr_v = L"xyzzy";
 
    std::cout << cppstr_v << '\n'
              << array_v << '\n'
              << wcstr_v.size() << '\n';
}

输出:

Foo
Bar
5

参阅

对视图赋值
(公开成员函数)