std::basic_string<CharT,Traits,Allocator>::contains
From cppreference.com
< cpp | string | basic string
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
std::basic_string
Literals
Helper classes
Deduction guides (C++17)
(C++23)
(DR*)
(DR*)
(C++23)
(DR*)
(C++23)
(C++23)
(C++20)
(C++20)
basic_string::contains
(C++23)
(C++20)(C++20)
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20)
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++14)
(C++11)
constexpr bool
contains( std::basic_string_view <CharT,Traits> sv ) const noexcept;
(1)
(since C++23)
contains( std::basic_string_view <CharT,Traits> sv ) const noexcept;
constexpr bool
contains( CharT ch ) const noexcept;
(2)
(since C++23)
contains( CharT ch ) const noexcept;
constexpr bool
contains( const CharT* s ) const;
(3)
(since C++23)
contains( const CharT* s ) const;
Checks if the string contains the given substring. The substring may be one of the following:
1) A string view sv (which may be a result of implicit conversion from another
std::basic_string
).2) A single character ch.
3) A null-terminated character string s.
All three overloads are equivalent to return find(x) != npos;, where x
is the parameter.
Contents
[edit] Parameters
sv
-
a string view which may be a result of implicit conversion from another
std::basic_string
ch
-
a single character
s
-
a null-terminated character string
[edit] Return value
true if the string contains the provided substring, false otherwise.
[edit] Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_string_contains |
202011L |
(C++23) | contains functions
|
[edit] Example
Run this code
#include <iomanip> #include <iostream> #include <string> #include <string_view> #include <type_traits> template<typename SubstrType> void test_substring(const std::string & str, SubstrType subs) { constexpr char delim = std::is_scalar_v <SubstrType> ? '\'' : '\"'; std::cout << std::quoted (str) << (str.contains(subs) ? " contains " : " does not contain ") << std::quoted (std::string {subs}, delim) << '\n'; } int main() { using namespace std::literals; auto helloWorld = "hello world"s; test_substring(helloWorld, "hello"sv); test_substring(helloWorld, "goodbye"sv); test_substring(helloWorld, 'w'); test_substring(helloWorld, 'x'); }
Output:
"hello world" contains "hello" "hello world" does not contain "goodbye" "hello world" contains 'w' "hello world" does not contain 'x'