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

NAME
     std::basic_string::c_str - std::basic_string::c_str

Synopsis
	const CharT* c_str() const;  (noexcept since C++11)
				     (constexpr since C++20)

	Returns a pointer to a null-terminated character array with data equiva-
     lent to those
	stored in the string.

	The  pointer is such that the range [c_str(), c_str() + size()] is valid
     and the
	values in it correspond to the values stored in the string with an addi-
     tional null
	character after the last position.

	The pointer obtained from c_str() may be invalidated by:

	  * Passing a non-const reference to the string to any standard  library
     function, or
	  * Calling non-const member functions on the string
	    ,  excluding  operator[],  at(), front(), back(), begin(), rbegin(),
     end() and
	    rend()
	    (since C++11).

	Writing to the character array accessed through c_str() is undefined be-
     havior.

	c_str() and data() perform the same function. (since C++11)

Parameters
	(none)

Return value
	Pointer to the underlying character storage.

	c_str()[i]   ==   operator[](i)   for	every	i   in	 [0,	size()).
     (until C++11)
	c_str()   +   i   ==   std::addressof(operator[](i))   for  every  i  in
     (since C++11)
	[0, size()].

Complexity
	Constant.

Notes
	The pointer obtained from c_str() may only be treated as a pointer to a
	null-terminated character string if the string object does  not  contain
     other null
	characters.

Example
     // Run this code

      #include <algorithm>
      #include <cassert>
      #include <cstring>
      #include <string>

      extern "C" void c_func(const char* c_str)
      {
	  printf("c_func called with '%s'\n", c_str);
      }

      int main()
      {
	  std::string const s("Emplary");
	  const char* p = s.c_str();
	  assert(s.size() == std::strlen(p));
	  assert(std::equal(s.begin(), s.end(), p));
	  assert(std::equal(p, p + s.size(), s.begin()));
	  assert('\0' == *(p + s.size()));

	  c_func(s.c_str());
      }

Output:
      c_func called with 'Emplary'

See also
	front accesses the first character
	(DR*) (public member function)
	back  accesses the last character
	(DR*) (public member function)
	data  returns a pointer to the first character of a string
	      (public member function)

http://cppreference.com 	   2024.06.10	     std::basic_string::c_str(3)

home | help