A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../keyword/../string/basic_string_view.html below:

std::basic_string_view - cppreference.com

template<

    class CharT,
    class Traits = std::char_traits<CharT>

> class basic_string_view;
(since C++17)

The class template basic_string_view describes an object that can refer to a constant contiguous sequence of CharT with the first element of the sequence at position zero.

For a basic_string_view str, pointers, iterators, and references to elements of str are invalidated when an operation invalidates a pointer in the range [str.data()str.data() + str.size()).

Every specialization of std::basic_string_view is a TriviallyCopyable type.

(since C++23)

Several typedefs for common character types are provided:

Type Definition std::string_view (C++17) std::basic_string_view<char> std::wstring_view (C++17) std::basic_string_view<wchar_t> std::u8string_view (C++20) std::basic_string_view<char8_t> std::u16string_view (C++17) std::basic_string_view<char16_t> std::u32string_view (C++17) std::basic_string_view<char32_t> [edit] Template parameters CharT - character type Traits - CharTraits class specifying the operations on the character type. Like for std::basic_string, Traits::char_type must name the same type as CharT or the program is ill-formed. [edit] Nested types Type Definition traits_type Traits value_type CharT pointer CharT* const_pointer const CharT* reference CharT& const_reference const CharT& const_iterator implementation-defined constant LegacyRandomAccessIterator,

whose value_type is CharT

iterator const_iterator const_reverse_iterator std::reverse_iterator<const_iterator> reverse_iterator const_reverse_iterator size_type std::size_t difference_type std::ptrdiff_t

Note: iterator and const_iterator are the same type because string views are views into constant character sequences.

All requirements on the iterator types of a Container applies to the iterator and const_iterator types of basic_string_view as well.

[edit] Data members Member Description const_pointer data_ a pointer to the underlying sequence
(exposition-only member object*) size_type size_ the number of characters
(exposition-only member object*) [edit] Member functions Constructors and assignment constructs a basic_string_view
(public member function) [edit] assigns a view
(public member function) [edit] Iterators returns an iterator to the beginning
(public member function) [edit] returns an iterator to the end
(public member function) [edit] returns a reverse iterator to the beginning
(public member function) [edit] returns a reverse iterator to the end
(public member function) [edit] Element access accesses the specified character
(public member function) [edit] accesses the specified character with bounds checking
(public member function) [edit] accesses the first character
(public member function) [edit] accesses the last character
(public member function) [edit] returns a pointer to the first character of a view
(public member function) [edit] Capacity returns the number of characters
(public member function) [edit] returns the maximum number of characters
(public member function) [edit] checks whether the view is empty
(public member function) [edit] Modifiers shrinks the view by moving its start forward
(public member function) [edit] shrinks the view by moving its end backward
(public member function) [edit] swaps the contents
(public member function) [edit] Operations copies characters
(public member function) [edit] returns a substring
(public member function) [edit] compares two views
(public member function) [edit] checks if the string view starts with the given prefix
(public member function) [edit] checks if the string view ends with the given suffix
(public member function) [edit] checks if the string view contains the given substring or character
(public member function) [edit] find characters in the view
(public member function) [edit] find the last occurrence of a substring
(public member function) [edit] find first occurrence of characters
(public member function) [edit] find last occurrence of characters
(public member function) [edit] find first absence of characters
(public member function) [edit] find last absence of characters
(public member function) [edit] Constants special value. The exact meaning depends on the context
(public static member constant) [edit] [edit] Non-member functions [edit] Literals [edit] Helper classes [edit] Helper templates (since C++20)

This specialization of ranges::enable_borrowed_range makes basic_string_view satisfy borrowed_range.

template< class CharT, class Traits >

inline constexpr bool

    ranges::enable_view<std::basic_string_view<CharT, Traits>> = true;
(since C++20)

This specialization of ranges::enable_view makes basic_string_view satisfy view.

[edit] Notes

It is the programmer's responsibility to ensure that std::string_view does not outlive the pointed-to character array:

std::string_view good{"a string literal"};
    // "Good" case: `good` points to a static array.
    // String literals reside in persistent data storage.
 
std::string_view bad{"a temporary string"s};
    // "Bad" case: `bad` holds a dangling pointer since the std::string temporary,
    // created by std::operator""s, will be destroyed at the end of the statement.

Specializations of std::basic_string_view are already trivially copyable types in all existing implementations, even before the formal requirement introduced in C++23.

[edit] Example
#include <iostream>
#include <string_view>
 
int main()
{
    #define A "▀"
    #define B "▄"
    #define C "─"
 
    constexpr std::string_view blocks[]{A B C, B A C, A C B, B C A};
 
    for (int y{}, p{}; y != 8; ++y, p = ((p + 1) % 4))
    {
        for (char x{}; x != 29; ++x)
            std::cout << blocks[p];
        std::cout << '\n';
    }
}

Output:

▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─
▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─
▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄
▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀
▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─
▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─
▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄
▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀
[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior LWG 3203 C++17 only pointers, iterators, and references
returned from the member functions of
basic_string_view might be invalidated all pointers, iterators, and references
to elements of basic_string_view
may be invalidated [edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4