# std::basic_string<CharT,Traits,Allocator>::contains

< cpp‎ | string‎ | basic string

constexpr bool contains( std::basic_string_view<CharT,Traits> sv ) const noexcept; | (1) | (C++23 起)
constexpr bool contains( CharT c ) const noexcept; | (2) | (C++23 起)
constexpr bool contains( const CharT* s ) const; | (3) | (C++23 起)

检查字符串是否含有给定子串。子串可以是下列三种之一：

1) 字符串视图 `sv` （可能为从另一 `std::basic_string` 隐式转换的结果）。
2) 单个字符 `c` 。
3) 空终止字符串 `s` 。

所有三个重载都等价于 return find(x) != npos; ，其中 `x` 为参数。

### 参数

sv | - | 字符串视图，可能为从另一 `std::basic_string` 隐式转换的结果
c | - | 单个字符
s | - | 空终止字符串

### 返回值

若字符串含有给定子串则为 true ，否则为 false 。

### 示例

    #include <iostream>
    #include <string_view>
    #include <string>

    template <typename SubstrType>
    void test_substring_print(const std::string& str, SubstrType subs)
    {
        std::cout << '\'' << str << "' contains '" << subs << "': " <<
            str.contains(subs) << '\n';
    }

    int main()
    {
        std::boolalpha(std::cout);
        auto helloWorld = std::string("hello world");

        test_substring_print(helloWorld, std::string_view("hello"));

        test_substring_print(helloWorld, std::string_view("goodbye"));

        test_substring_print(helloWorld, 'w');

        test_substring_print(helloWorld, 'x');
    }

输出：

    'hello world' contains 'hello': true
    'hello world' contains 'goodbye': false
    'hello world' contains 'w': true
    'hello world' contains 'x': false

### 参阅

starts_with (C++20) | 检查 string 是否始于给定前缀 (公开成员函数)
ends_with (C++20) | 检查 string 是否终于给定后缀 (公开成员函数)
find | 于字符串中寻找字符 (公开成员函数)
substr | 返回子串 (公开成员函数)