# 实验性库头文件 <experimental/string_view>

< cpp‎ | header‎ | experimental

此头文件是库基础 TS (v1, v2) 的一部分。

### 类

名字 | 说明
std::experimental::basic_string_view (库基础 TS) | 表示到某个字符串的引用的类模板 (类模板)
std::experimental::string_view (库基础 TS) | std::experimental::basic_string_view<char> (typedef)
std::experimental::wstring_view (库基础 TS) | std::experimental::basic_string_view<wchar_t> (typedef)
std::experimental::u16string_view (库基础 TS) | std::experimental::basic_string_view<char16_t> (typedef)
std::experimental::u32string_view (库基础 TS) | std::experimental::basic_string_view<char32_t> (typedef)
std::hash<std::experimental::string_view> (库基础 TS) | (类模板特化)
std::hash<std::experimental::u16string_view> (库基础 TS) | (类模板特化)
std::hash<std::experimental::u32string_view> (库基础 TS) | (类模板特化)
std::hash<std::experimental::wstring_view> (库基础 TS) | (类模板特化)

### 函数

operator==operator!=operator<operator>operator<=operator>= | 以字典序比较两个视图 (函数模板)
##### 输出
operator<< | 进行视图的流输出 (函数模板)

### 概要

    namespace std {
      namespace experimental {
      inline namespace fundamentals_v1 {

        // 7.2，类模板 basic_string_view
        template<class charT, class traits = char_traits<charT>>
            class basic_string_view;

        // 7.9，basic_string_view 的非成员比较函数
        template<class charT, class traits>
        constexpr bool operator==(basic_string_view<charT, traits> x,
                                  basic_string_view<charT, traits> y) noexcept;
        template<class charT, class traits>
        constexpr bool operator!=(basic_string_view<charT, traits> x,
                                  basic_string_view<charT, traits> y) noexcept;
        template<class charT, class traits>
        constexpr bool operator< (basic_string_view<charT, traits> x,
                                     basic_string_view<charT, traits> y) noexcept;
        template<class charT, class traits>
        constexpr bool operator> (basic_string_view<charT, traits> x,
                                  basic_string_view<charT, traits> y) noexcept;
        template<class charT, class traits>
        constexpr bool operator<=(basic_string_view<charT, traits> x,
                                     basic_string_view<charT, traits> y) noexcept;
        template<class charT, class traits>
        constexpr bool operator>=(basic_string_view<charT, traits> x,
                                  basic_string_view<charT, traits> y) noexcept;
        // 见下文，充足的比较函数的额外重载

        // 7.10，插入符与提取符
        template<class charT, class traits>
          basic_ostream<charT, traits>&
            operator<<(basic_ostream<charT, traits>& os,
                       basic_string_view<charT, traits> str);

        // basic_string_view typedef 名
        typedef basic_string_view<char> string_view;
        typedef basic_string_view<char16_t> u16string_view;
        typedef basic_string_view<char32_t> u32string_view;
        typedef basic_string_view<wchar_t> wstring_view;

      }  // namespace fundamentals_v1
      }  // namespace experimental

      // 7.11，散列支持
      template <class T> struct hash;
      template <> struct hash<experimental::string_view>;
      template <> struct hash<experimental::u16string_view>;
      template <> struct hash<experimental::u32string_view>;
      template <> struct hash<experimental::wstring_view>;

    }  // namespace std