std::basic_...ng::contains(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

✨ NAME ✨

okay so bestie, this is the page for std::basic_string::contains β€” std::basic_string::contains, exactly like the NAME says (twice, because slay πŸ’…). The title is std::basic_...ng::contains(3), and the manual name is C++ Standard Libary (yep, the header spells it β€œLibary” and we are not fixing it). This is lowkey the β€œdoes my string contain this substring?” queen. πŸ‘‘

πŸ“– Synopsis πŸ“–

three overloads, all constexpr, all here since C++23 β€” check the noexcept placement:

constexpr bool
    contains( std::basic_string_view<CharT,Traits> sv ) const
(1) (since C++23)
noexcept;
constexpr bool
(2) (since C++23)
    contains( CharT ch ) const noexcept;
constexpr bool
(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. no cap, that's the whole trick ✨

πŸ’– 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

πŸŽ€ Return value πŸŽ€

true if the string contains the provided substring, false otherwise. that's the whole answer, bestie πŸ’–

🌸 Notes 🌸

  • Feature-test macro __cpp_lib_string_contains β€” Value 202011L, Std (C++23), Feature contains functions

πŸ¦‹ 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'

πŸ‘‘ See also πŸ‘‘

  • starts_with β€” checks if the string starts with the given prefix (C++20) (public member function)
  • ends_with β€” checks if the string ends with the given suffix (C++20) (public member function)
  • find β€” finds the first occurrence of the given substring (public member function)
  • substr β€” returns a substring (public member function)
  • contains β€” checks if the string view contains the given substring or character (C++23) (public member function of std::basic_string_view<CharT,Traits>)

mwah πŸ’‹ β€” source: http://cppreference.com, version/date: 2024.06.10, and this iconic page is std::basic_...ng::contains(3). bye bestie 🫢

πŸ“¦ where this page comes from