Heim >Backend-Entwicklung >C++ >Erfordert C 11 nullterminierte Strings für c_str() und 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!