std::basic_...w::ends_with(3)
π std::basic_...w::ends_with(3) π
okay so we're in the C++ Standard Libary manual (yes, "Libary" β the typo is part of the lore, bestie π), section (3), and today's main character is std::basic_string_view::ends_with. It's giving "does this string view end with that suffix?" and honestly? iconic.
β¨ NAME β¨
std::basic_string_view::ends_with β std::basic_string_view::ends_with
(periodt, the name ate and left no crumbs π )
π¦ Synopsis π¦
three overloads, all constexpr, all (since C++20), and look at the exact noexcept situation before you start assuming things π:
constexpr bool ends_with( basic_string_view sv ) const noexcept; (1)
(since C++20)
constexpr bool ends_with( CharT ch ) const noexcept; (2)
(since C++20)
constexpr bool ends_with( const CharT* s ) const; (3)
(since C++20)
Checks if the string view ends with the given suffix, where:
- the suffix is a string view. Effectively returns
size() >= sv.size() && compare(size() - sv.size(), npos, sv) == 0. - the suffix is a single character. Effectively returns
!empty() && Traits::eq(back(), ch). - the suffix is a null-terminated character string. Effectively returns
ends_with(basic_string_view(s)).
πΈ Parameters πΈ
svβ a string view which may be a result of implicit conversion fromstd::basic_stringchβ a single charactersβ a null-terminated character string
β Return value β
true if the string view ends with the provided suffix, false otherwise. that's the whole verdict, no plot twist π«Ά
π₯ Notes π₯
the feature-test macro table says:
- Feature-test macro:
__cpp_lib_starts_ends_with - Value:
201711L - Std:
(C++20) - Feature: String prefix and suffix checking:
starts_with()andends_with()
so yeah, this whole prefix/suffix situation is officially tracked, slay β¨
π Example π
the original has that little // Run this code marker β you know the vibe. here's the code, untouched:
#include <cassert>
#include <string_view>
int main()
{
using namespace std::literals;
assert
(""
// (1) ends_with( basic_string_view sv )
&&
std::string_view("https://cppreference.com").ends_with(".com"sv) == true
&&
std::string_view("https://cppreference.com").ends_with(".org"sv) ==
false
// (2) ends_with( CharT c )
&& std::string_view("C++20").ends_with('0') == true
&& std::string_view("C++20").ends_with('3') == false
// (3) ends_with( const CharT* s )
&& std::string_view("string_view").ends_with("view") == true
&& std::string_view("string_view").ends_with("View") == false
);
}
π See also π
starts_withβ checks if the string view starts with the given prefix (C++20) (public member function)starts_withβ checks if the string starts with the given prefix (C++20) (public member function ofstd::basic_string<CharT,Traits,Allocator>)ends_withβ checks if the string ends with the given suffix (C++20) (public member function ofstd::basic_string<CharT,Traits,Allocator>)containsβ checks if the string contains the given substring or character (C++23) (public member function ofstd::basic_string<CharT,Traits,Allocator>)containsβ checks if the string view contains the given substring or character (C++23) (public member function)compareβ compares two views (public member function)
source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::basic_...w::ends_with(3) β bye bestie, go check those suffixes π
β¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms