std::basic_string<CharT,Traits,Allocator>:c_str
const CharT* c_str() const; |
(noexcept seit C++11) (constexpr seit C++20) |
|
Gibt einen Zeiger auf ein nullterminiertes Zeichenarray zurück, dessen Daten mit denen in der Zeichenkette übereinstimmen.
Der Zeiger ist so beschaffen, dass der Bereich [c_str(), c_str() + size()] gültig ist und die Werte darin mit den in der Zeichenkette gespeicherten Werten mit einem zusätzlichen Nullzeichen nach der letzten Position übereinstimmen.
Der von c_str() erhaltene Zeiger kann ungültig werden durch
- Übergabe einer nicht-const Referenz auf die Zeichenkette an eine beliebige Standardbibliotheksfunktion, oder
- Aufruf von nicht-const Mitgliedsfunktionen auf der Zeichenkette, ausgenommen operator[], at(), front(), back(), begin(), rbegin(), end() und rend()(seit C++11).
Das Schreiben in das über c_str() zugängliche Zeichenarray ist undefiniertes Verhalten.
|
|
(seit C++11) |
Inhalt |
[edit] Parameter
(keine)
[edit] Rückgabewert
Zeiger auf den zugrunde liegenden Zeichenspeicher.
|
c_str()[i] == operator[](i) für jedes |
(bis C++11) |
|
c_str() + i == std::addressof(operator[](i)) für jedes |
(seit C++11) |
[edit] Komplexität
Konstant.
[edit] Anmerkungen
Der von c_str() erhaltene Zeiger kann nur als Zeiger auf eine nullterminierte Zeichenkette behandelt werden, wenn das Zeichenkettenobjekt keine weiteren Nullzeichen enthält.
[edit] Beispiel
#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()); }
Ausgabe
c_func called with 'Emplary'
[edit] Siehe auch
| (DR*) |
greift auf das erste Zeichen zu (public member function) |
| (DR*) |
greift auf das letzte Zeichen zu (public member function) |
| gibt einen Zeiger auf das erste Zeichen eines Strings zurück (public member function) |