Heim >Backend-Entwicklung >C++ >Erfordert C 11 nullterminierte Strings für c_str() und data()?

Erfordert C 11 nullterminierte Strings für c_str() und data()?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 03:15:02309Durchsuche

 Does C  11 Require Null-Terminated Strings for c_str() and data()?

Erlaubt C 11 Nicht-Null-terminierte Zeichenfolgen in der c_str()-Methode?

In C 11 ist die Definition von c_str( ) für die Klasse basic_string hat sich geändert. Es ist nun als äquivalent zu data() definiert, das wiederum so definiert ist, dass es einen Zeiger auf das n-te Element der Zeichenfolge zurückgibt, wobei n zwischen 0 und der Größe der Zeichenfolge minus 1 liegt.

Allerdings Die aktualisierte Definition der Methode „operator[]“, die sowohl c_str() als auch data() zugrunde liegt, macht deutlich, dass Zeichenfolgen jetzt intern nullterminierte Puffer verwenden müssen.

Dies erfordert insbesondere die Methode „operator[]“. dass der zurückgegebene Wert ein Verweis auf ein Objekt vom Typ T mit dem Wert charT() ist, wobei T der Typ der Elemente der Zeichenfolge und charT() der Typ des Nullzeichens ist. Darüber hinaus kann dieser referenzierte Wert nicht geändert werden.

Da c_str() und data() beide O(1)-Operationen sein müssen, ist die Implementierung im Wesentlichen gezwungen, nullterminierte Puffer zu verwenden. Darüber hinaus bedeutet die Rückgabewertanforderung der Methode „operator[] auch, dass sich das abschließende Nullzeichen im selben Puffer wie die Elemente der Zeichenfolge befinden muss.

Das obige ist der detaillierte Inhalt vonErfordert C 11 nullterminierte Strings für c_str() und data()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn