# std::literals::string_view_literals::operator""sv

< cpp‎ | string‎ | basic string view

定义于头文件 `<string_view>` |  |
constexpr std::string_view operator "" sv(const char* str, std::size_t len) noexcept; | (1) | (C++17 起)
constexpr std::u8string_view operator "" sv(const char8_t* str, std::size_t len) noexcept; | (2) | (C++20 起)
constexpr std::u16string_view operator "" sv(const char16_t* str, std::size_t len) noexcept; | (3) | (C++17 起)
constexpr std::u32string_view operator "" sv(const char32_t* str, std::size_t len) noexcept; | (4) | (C++17 起)
constexpr std::wstring_view operator "" sv(const wchar_t* str, std::size_t len) noexcept; | (5) | (C++17 起)

从字符数组字面量组成 string_view 。

1) 返回 std::string_view{str, len}
2) 返回 std::u8string_view{str, len}
3) 返回 std::u16string_view{str, len}
4) 返回 std::u32string_view{str, len}
5) 返回 std::wstring_view{str, len}

### 参数

str | - | 指向无修饰字符数组字面量起始的指针
len | - | 无修饰字符数组字面量的长度

### 返回值

`string_view` 字面量。

### 注解

这些运算符声明于命名空间 `std::literals::string_view_literals` ， `literals` 和 `string_view_literals` 均为内联命名空间。能以 using namespace std::literals 、 using namespace std::string_view_literals 及 using namespace std::literals::string_view_literals 取得对这些运算符的访问。

### 示例

    #include <string_view>
    #include <iostream>

    int main()
    {
        using namespace std::literals;

        std::string_view s1 = "abc\0\0def";
        std::string_view s2 = "abc\0\0def"sv;
        std::cout << "s1: " << s1.size() << " \"" << s1 << "\"\n";
        std::cout << "s2: " << s2.size() << " \"" << s2 << "\"\n";

        std::cout
            << "narrow string literal"sv.size() << '\n'
            << L"wide string literal"sv.size() << '\n'
            << R"(raw string literal)"sv.size() << '\n';
    }

可能的输出：

    s1: 3 "abc"
    s2: 8 "abc^@^@def"
    21
    19
    18

### 参阅

(构造函数) | 构造 `basic_string_view` (公开成员函数)