basic_string::c_str

const charT* c_str() const;
const charT* c_str() const noexcept;
Get C-string equivalent
Returns a pointer to an array that contains a null-terminated sequence of characters (i.e., a C-string) representing the current value of the basic_string object.

This array includes the same sequence of characters that make up the value of the basic_string object plus an additional terminating null-character (charT()) at the end.

A program shall not alter any of the characters in this sequence.
The pointer returned points to the internal array currently used by the basic_string object to store the characters that conform its value.

Both basic_string::data and basic_string::c_str are synonyms and return the same value.

The pointer returned may be invalidated by further calls to other member functions that modify the object.

Parameters

none

Return Value

A pointer to the c-string representation of the basic_string object's value.

charT is basic_string's character type (i.e., its first template parameter).

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// strings and c-strings
#include <iostream>
#include <cstring>
#include <string>

int main ()
{
  std::string str ("Please split this sentence into tokens");

  char * cstr = new char [str.length()+1];
  std::strcpy (cstr, str.c_str());

  // cstr now contains a c-string copy of str

  char * p = std::strtok (cstr," ");
  while (p!=0)
  {
    std::cout << p << '\n';
    p = strtok(NULL," ");
  }

  delete[] cstr;
  return 0;
}

Output:
Please
split
this
sentence
into
tokens


Complexity, iterator, access, exceptions

Unspecified or contradictory specifications.

Complexity

Constant.

Iterator validity

No changes.

Data races

The object is accessed.

Exception safety

No-throw guarantee: this member function never throws exceptions.

See also