Heim > Backend-Entwicklung > C++ > Hauptteil

Hier sind einige Titeloptionen unter Berücksichtigung des Fragenformats: Direkt und klar: * Ist „string::c_str()' in C 11 immer noch nullterminiert? * Garantiert „string::c_str()' eine Nullterminierung in C?

Barbara Streisand
Freigeben: 2024-10-26 14:34:02
Original
273 Leute haben es durchsucht

Here are a few title options, keeping in mind the question format:

Direct and Clear:

* Is `string::c_str()` Still Null-Terminated in C  11?
* Does `string::c_str()` Guarantee Null Termination in C  11?

More Engaging:

* C  11 Mystery: Is `string::c_str

Ist String::c_str() in C 11 nicht mehr nullterminiert?

In C 11 ist das Verhalten von string:: c_str() war Gegenstand von Debatten. Einige Quellen deuten darauf hin, dass möglicherweise keine nullterminierte Zeichenfolge mehr erzeugt wird.

Bei näherer Betrachtung wird jedoch klar, dass dies nicht der Fall ist. Die Definition von „operator[]“ in C 11 erfordert, dass Zeichenfolgen intern nullterminierte Puffer verwenden. Dies bedeutet, dass c_str(), das in Bezug auf „operator[]“ definiert ist, auch eine nullterminierte Zeichenfolge zurückgeben muss.

Konkret heißt es in Abschnitt 21.4.5 des C 11-Standards, dass „operator[]“ zurückgeben muss „ein Verweis auf ein Objekt vom Typ T mit dem Wert charT(); der referenzierte Wert darf nicht geändert werden.“ Dies bedeutet, dass die Zeichenfolge am Ende ein Nullzeichen enthalten muss.

Zusätzlich definiert Abschnitt 21.4.7.1/1 c_str() als „Ein Zeiger p, so dass p i == &operator[](i) für jeden i in [0,size()].“ Dies bedeutet, dass c_str() Zugriff auf denselben Puffer wie „operator[]“ bietet, der nullterminiert sein muss.

Daher ist string::c_str() trotz anfänglicher Bedenken immer noch garantiert, dass ein Null-Terminiert wird. abgeschlossener String in C 11.

Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen unter Berücksichtigung des Fragenformats: Direkt und klar: * Ist „string::c_str()' in C 11 immer noch nullterminiert? * Garantiert „string::c_str()' eine Nullterminierung in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!