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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::basic_string - std::basic_string

Synopsis
	  Defined in header <string>
	  template<

	  class	CharT,
	  class	Traits = std::char_traits<CharT>,			 (1)
	  class	Allocator = std::allocator<CharT>

	  > class basic_string;
	  namespace pmr	{

	  template <class CharT, class Traits =	std::char_traits<CharT>>
	  using	 basic_string  = std::basic_string< CharT, Traits,	   (2)
       (since C++17)
	  std::pmr::polymorphic_allocator<CharT> >;

	  }

	  The class template basic_string stores and manipulates sequences  of
       char-like
	  objects,  which  are	non-array  objects  of trivial standard-layout
       type. The class is
	  dependent neither on the character type nor on the nature of	opera-
       tions on	that
	  type.	 The definitions of the	operations are supplied	via the	Traits
       template
	  parameter - a	specialization of  std::char_traits  or	 a  compatible
       traits class.
	  Traits::char_type  and  CharT	must name the same type; otherwise the
       program is
	  ill-formed.

	  The elements of a basic_string are stored contiguously, that is, for
       a basic_string
	  s, &*(s.begin() + n) == &*s.begin() +	n for any n in [0,  s.size()),
       or,
	  equivalently,	 a pointer to s[0] can be passed to functions that ex-
       pect a pointer to
	  the first element of a
	  null-terminated
	  (since C++11)CharT[] array.

	  std::basic_string satisfies the requirements	of  AllocatorAwareCon-
       tainer (except that
	  customized  construct/destroy	are not	used for construction/destruc-
       tion of elements),
	  SequenceContainer
	  and ContiguousContainer
	  (since C++17)

	  Member functions of std::basic_string	are constexpr: it is  possible
       to
	  create and use std::string objects in	the evaluation of a constant
	  expression.
										 (since
       C++20)
	  However, std::string objects generally cannot	be constexpr, because
	  any dynamically allocated storage must be released in	the same
	  evaluation of	constant expression.

	  Several typedefs for common character	types are provided:

	  Defined in header <string>
	  Type			      Definition
	  std::string		      std::basic_string<char>
	  std::wstring		      std::basic_string<wchar_t>
	  std::u8string	(C++20)	      std::basic_string<char8_t>
	  std::u16string (C++11)      std::basic_string<char16_t>
	  std::u32string (C++11)      std::basic_string<char32_t>
	  std::pmr::string (C++17)    std::pmr::basic_string<char>
	  std::pmr::wstring (C++17)   std::pmr::basic_string<wchar_t>
	  std::pmr::u8string (C++20)  std::pmr::basic_string<char8_t>
	  std::pmr::u16string (C++17) std::pmr::basic_string<char16_t>
	  std::pmr::u32string (C++17) std::pmr::basic_string<char32_t>

Template parameters
	  CharT	    - character	type
	  Traits     - traits class specifying the operations on the character
       type
	  Allocator - Allocator	type used to allocate internal storage

Member types
	  Member type		 Definition
	  traits_type		 Traits
	  value_type		 CharT
	  allocator_type	 Allocator
	  size_type					  Allocator::size_type
       (until C++11)
				 std::allocator_traits<Allocator>::size_type
       (since C++11)
				 Allocator::difference_type
       (until
	  difference_type
       C++11)
				 std::allocator_traits<Allocator>::differ-
       ence_type (since
										   C++11)
	  reference		 value_type&
	  const_reference	 const value_type&
	  pointer					    Allocator::pointer
       (until C++11)
				 std::allocator_traits<Allocator>::pointer
       (since C++11)
	  const_pointer				      Allocator::const_pointer
       (until C++11)
				 std::allocator_traits<Alloca-
       tor>::const_pointer (since C++11)
				 LegacyRandomAccessIterator		   and
       (until C++20)
				 LegacyContiguousIterator to value_type
	  iterator		 LegacyRandomAccessIterator,
				 contiguous_iterator, and ConstexprIterator to
       (since C++20)
				 value_type
				 LegacyRandomAccessIterator		   and
       (until C++20)
				 LegacyContiguousIterator to const value_type
	  const_iterator	 LegacyRandomAccessIterator,
				 contiguous_iterator, and ConstexprIterator to
       (since C++20)
				 const value_type
	  reverse_iterator	 std::reverse_iterator<iterator>
	  const_reverse_iterator std::reverse_iterator<const_iterator>

Member functions
	  constructor		     constructs	a basic_string
				     (public member function)
				     destroys  the string, deallocating	inter-
       nal storage if
	  destructor		     used
				     (public member function)
	  operator=		     assigns values to the string
				     (public member function)
	  assign		     assign characters to a string
				     (public member function)
	  get_allocator		     returns the associated allocator
				     (public member function)

Element	access
	  at			     accesses  the  specified  character  with
       bounds checking
				     (public member function)
	  operator[]		     accesses the specified character
				     (public member function)
	  front			     accesses the first	character
	  (C++11)		     (public member function)
	  back			     accesses the last character
	  (C++11)		     (public member function)
	  data			      returns a	pointer	to the first character
       of a string
				     (public member function)
				     returns a non-modifiable standard C char-
       acter array
	  c_str			     version of	the string
				     (public member function)
	  operator basic_string_view returns a non-modifiable string_view into
       the entire
	  (C++17)		     string
				     (public member function)

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

Capacity
	  empty			     checks whether the	string is empty
				     (public member function)
	  size			     returns the number	of characters
	  length		     (public member function)
	  max_size		     returns the maximum number	of characters
				     (public member function)
	  reserve		     reserves storage
				     (public member function)
				     returns the number	of characters that can
       be held in
	  capacity		     currently allocated storage
				     (public member function)
	  shrink_to_fit		      reduces  memory  usage by	freeing	unused
       memory
	  (C++11)		     (public member function)

Operations
	  clear			     clears the	contents
				     (public member function)
	  insert		     inserts characters
				     (public member function)
	  erase			     removes characters
				     (public member function)
	  push_back		     appends a character to the	end
				     (public member function)
	  pop_back		     removes the last character
	  (C++11)		     (public member function)
	  append		     appends characters	to the end
				     (public member function)
	  operator+=		     appends characters	to the end
				     (public member function)
	  compare		     compares two strings
				     (public member function)
	  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)
	  contains		     checks if the string contains  the	 given
       substring or
	  (C++23)		     character
				     (public member function)
	  replace		     replaces specified	portion	of a string
				     (public member function)
	  substr		     returns a substring
				     (public member function)
	  copy			     copies characters
				     (public member function)
	  resize		     changes the number	of characters stored
				     (public member function)
				     changes  the  number of characters	stored
       and possibly
	  resize_and_overwrite	      overwrites  indeterminate	 contents  via
       user-provided
	  (C++23)		     operation
				     (public member function)
	  swap			     swaps the contents
				     (public member function)

Search
	  find			     find characters in	the string
				     (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_first_not_of	     find first	absence	of characters
				     (public member function)
	  find_last_of		     find last occurrence 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+		       concatenates two	strings	 or  a	string
       and a char
				       (function template)
	  operator==
	  operator!=
	  operator<
	  operator>
	  operator<=
	  operator>=		       lexicographically compares two strings
	  operator<=>		       (function template)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (C++20)
	  std::swap(std::basic_string) specializes the std::swap algorithm
				       (function template)
	  erase(std::basic_string)     Erases all elements satisfying specific
       criteria
	  erase_if(std::basic_string)  (function template)
	  (C++20)

Input/output
	  operator<<			performs  stream  input	 and output on
       strings
	  operator>>		       (function template)
	  getline		       read data from an  I/O  stream  into  a
       string
				       (function template)

Numeric	conversions
	  stoi
	  stol
	  stoll			       converts	a string to a signed integer
	  (C++11)		       (function)
	  (C++11)
	  (C++11)
	  stoul
	  stoull			converts a string to an	unsigned inte-
       ger
	  (C++11)		       (function)
	  (C++11)
	  stof
	  stod
	  stold			       converts	a string to a  floating	 point
       value
	  (C++11)		       (function)
	  (C++11)
	  (C++11)
	  to_string			converts an integral or	floating point
       value to	string
	  (C++11)		       (function)
	  to_wstring		       converts	an integral or floating	 point
       value to	wstring
	  (C++11)		       (function)

Literals
	  Defined in inline namespace std::literals::string_literals
	  operator""s	Converts a character array literal to basic_string
	  (C++14)	(function)

Helper classes
	  std::hash<std::string>
	  std::hash<std::u8string>
	  std::hash<std::u16string>
	  std::hash<std::u32string>
	  std::hash<std::wstring>
	  std::hash<std::pmr::string>
	  std::hash<std::pmr::u8string>
	  std::hash<std::pmr::u16string>
	  std::hash<std::pmr::u32string>
	  std::hash<std::pmr::wstring>	 hash support for strings
	  (C++11)			 (class	template specialization)
	  (C++20)
	  (C++11)
	  (C++11)
	  (C++11)
	  (C++17)
	  (C++20)
	  (C++17)
	  (C++17)
	  (C++17)

	 Deduction guides (since C++17)

Notes
	  Although it is required that customized construct or destroy is used
       when
	  constructing	or  destroying	elements  of  std::basic_string	 until
       C++23, all
	  implementations only used the	default	mechanism. The requirement  is
       corrected by
	  P1072R10 to match existing practice.

Example
       // Run this code

	#include <iostream>
	#include <string>

	int main()
	{
	    using namespace std::literals;

	    // Creating	a string from const char*
	    std::string	str1 = "hello";

	    // Creating	a string using string literal
	    auto str2 =	"world"s;

	    // Concatenating strings
	    std::string	str3 = str1 + "	" + str2;

	    // Print out the result
	    std::cout << str3 << '\n';

	    std::string::size_type pos = str3.find(" ");
	    str1 = str3.substr(pos + 1); // the	part after the space
	    str2 = str3.substr(0, pos);	 // the	part till the space

	    std::cout << str1 << ' ' <<	str2 <<	'\n';

	    // Accessing an element using subscript operator[]
	    std::cout << str1[0] << '\n';
	    str1[0] = 'W';
	    std::cout << str1 << '\n';
	}

Output:
	hello world
	world hello
	w
	World

See also
	  basic_string_view read-only string view
	  (C++17)	    (class template)

http://cppreference.com		  2022.07.31		  std::basic_string(3)

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

home | help