Liefert die Methode c_str () von std :: string immer eine mit Null beendete Zeichenkette?
Ja.
Die Spezifikation lautet:
Rückgabewert: Ein Zeiger
p
, so dassp + i == &operator[](i)
für jedeni
in[0,size()]
.
Beachten Sie, dass der für i
angegebene Bereich geschlossen ist, sodass size()
für einen gültigen Index steht, der sich auf das Zeichen nach dem Ende der Zeichenfolge bezieht.
operator[]
wird so angegeben:
Rückgabe:
*(begin() + pos)
ifpos < size()
, ansonsten eine Referenz auf ein Objekt vom TypT
mit WertcharT()
Im Fall von std::string
, das ein Alias für std::basic_string<char>
ist, so dass charT
für char
steht, hat ein wertkonstruiertes char
den Wert null; daher ist das Zeichenfeld, auf das das Ergebnis von std::string::c_str()
zeigt, null-terminiert.
c_str gibt eine "C-Zeichenfolge" zurück. Und C-Strings enden immer mit einem Nullzeichen. Dies ist C-Standard.