Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_string_view(3)     C++ Standard Libary    std::basic_string_view(3)

NAME
       std::basic_string_view -	std::basic_string_view

Synopsis
	  Defined in header <string_view>
	  template<

	      class CharT,			      (since C++17)
	      class Traits = std::char_traits<CharT>

	  > class basic_string_view;

	  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	TriviallyCopy-
       able  (since C++23)
	  type.

	  A  typical  implementation holds only	two members: a pointer to con-
       stant CharT and a
	  size.

	  Several typedefs for common character	types are provided:

	  Defined in header <string_view>
	  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>

Template parameters
	  CharT	 - character type
		   CharTraits class specifying the operations on the character
       type. Like for
	  Traits - std::basic_string, Traits::char_type	 must  name  the  same
       type as CharT or
		   the program is ill-formed.

	  Nested types

	  Nested type		 Definition
	  traits_type		 Traits
	  value_type		 CharT
	  pointer		 CharT*
	  const_pointer		 const CharT*
	  reference		 CharT&
	  const_reference	 const CharT&
				 implementation-defined	 constant LegacyRando-
       mAccessIterator,

	  const_iterator		 and	      LegacyContiguousIterator
       (until C++20)
				 ConstexprIterator,   and  contiguous_iterator
       (since C++20)

				 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.

Member functions
		Constructors and assignment
	  constructor	    constructs a basic_string_view
			    (public member function)
	  operator=	    assigns a view
			    (public member function)

Iterators
	  begin		    returns an iterator	to the beginning
	  cbegin	    (public member function)
	  end		    returns an iterator	to the end
	  cend		    (public member function)
	  rbegin	    returns a reverse iterator to the beginning
	  crbegin	    (public member function)
	  rend		    returns a reverse iterator to the end
	  crend		    (public member function)

Element	access
	  operator[]	    accesses the specified character
			    (public member function)
	  at		     accesses  the  specified  character  with	bounds
       checking
			    (public member function)
	  front		    accesses the first character
			    (public member function)
	  back		    accesses the last character
			    (public member function)
	  data		    returns a pointer to the first character of	a view
			    (public member function)

Capacity
	  size		    returns the	number of characters
	  length	    (public member function)
	  max_size	    returns the	maximum	number of characters
			    (public member function)
	  empty		    checks whether the view is empty
			    (public member function)

Modifiers
	  remove_prefix	    shrinks the	view by	moving its start forward
			    (public member function)
	  remove_suffix	    shrinks the	view by	moving its end backward
			    (public member function)
	  swap		    swaps the contents
			    (public member function)

Operations
	  copy		    copies characters
			    (public member function)
	  substr	    returns a substring
			    (public member function)
	  compare	    compares two views
			    (public member function)
	  starts_with	    checks if the string view starts  with  the	 given
       prefix
	  (C++20)	    (public member function)
	  ends_with	    checks if the string view ends with	the given suf-
       fix
	  (C++20)	    (public member function)
	  contains	     checks if the string view contains	the given sub-
       string or
	  (C++23)	    character
			    (public member function)
	  find		    find characters in the view
			    (public member function)
	  rfind		    find the last occurrence of	a substring
			    (public member function)
	  find_first_of	    find first occurrence of characters
			    (public member function)
	  find_last_of	    find last occurrence of characters
			    (public member function)
	  find_first_not_of find first absence of characters
			    (public member function)
	  find_last_not_of  find last absence of characters
			    (public member function)

Constants
	  npos		    special value. The exact meaning  depends  on  the
       context
	  [static]	    (public static member constant)

Non-member functions
	  operator==
	  operator!=
	  operator<
	  operator>
	  operator<=
	  operator>=
	  operator<=>	     lexicographically compares	two string views
	  (C++17)	     (function template)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (C++20)

Input/output
	  operator<<	     performs stream output on string views
	  (C++17)	     (function template)

Literals
	  Defined in inline namespace std::literals::string_view_literals
	  operator""sv	  creates a string view	of a character array literal
	  (C++17)	  (function)

Helper classes
	  std::hash<std::string_view>
	  std::hash<std::wstring_view>
	  std::hash<std::u8string_view>
	  std::hash<std::u16string_view>
	  std::hash<std::u32string_view> hash support for string views
	  (C++17)			 (class	template specialization)
	  (C++17)
	  (C++20)
	  (C++17)
	  (C++17)

	  Helper templates

	  template< class CharT, class Traits >

	  inline			 constexpr			  bool
       (since
										       C++20)
	      ranges::enable_borrowed_range<std::basic_string_view<CharT,
       Traits>>	=
	  true;

	  This	specialization	of  ranges::enable_borrowed_range  makes   ba-
       sic_string_view satisfy
	  borrowed_range.

	  template< class CharT, class Traits >

	  inline			 constexpr			  bool
       (since C++20)

	      ranges::enable_view<std::basic_string_view<CharT,	Traits>> =
	  true;

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

	    Deduction guides (since C++20)

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 in-
       troduced	in
	  C++23.

	     Feature-test macro	     Value    Std	 Feature
	  __cpp_lib_string_view	    201606L (C++17) std::string_view
				    201803L (C++20) ConstexprIterator
	  __cpp_lib_string_contains 202011L (C++23) contains

Example
       // Run this code

	#include <iostream>
	#include <string_view>

	int main()
	{
	    constexpr std::string_view unicode[]{"", "", "", ""};

	    for	(int y{}, p{}; y != 6; ++y, p =	((p + 1) % 4))
	    {
		for (int x{}; x	!= 16; ++x)
		    std::cout << unicode[p];
		std::cout << '\n';
	    }
	}

Output:

	  Defect reports

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

	     DR	    Applied  to	       Behavior	as published		  Cor-
       rect behavior
			      only pointers, iterators,	and	   all	point-
       ers, iterators, and
			      references			  references
	  LWG  3203 C++17      returned	from the member	functions  to elements
       of
			      of					   ba-
       sic_string_view
			      basic_string_view	 might	be	    may	be in-
       validated
			      invalidated

See also
	  basic_string	   stores and manipulates sequences of characters
			   (class template)
	  span		   a non-owning	view over a contiguous sequence	of ob-
       jects
	  (C++20)	   (class template)
	  initializer_list creates a temporary	array  in  list-initialization
       and then
	  (C++11)	   references it
			   (class template)

http://cppreference.com		  2024.06.10	     std::basic_string_view(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::string_view&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help