Heim >Backend-Entwicklung >C++ >Ist „std::string' von C 11 garantiert nullterminiert?
In C 11 bleibt das Verhalten von std::string in Bezug auf Nullterminierung ein wichtiges Thema. Wie in früheren Diskussionen besprochen, schlug Herb Sutter vor, die Anforderungen in C 0x zu verschärfen, um die Nullterminierung durchzusetzen und möglicherweise Copy-on-Write-Implementierungen aus Gründen der Parallelität zu verbieten.
Der endgültige Entwurf von C 11 hat diese Vorschläge übernommen. Laut [string.accessors] p1, std::basic_string::c_str():
Returns: A pointer p such that p + i == &operator[](i) for each i in [0,size()].
Diese entscheidende Anforderung impliziert, dass bei gegebener Zeichenfolge s der von s.c_str() zurückgegebene Zeiger gleich sein muss an die Adresse des Anfangszeichens in der Zeichenfolge (&s[0]). Folglich ist es jetzt sicher, &str[0] zu verwenden, um auf das zugrunde liegende Zeichenarray von std::string zuzugreifen. Dieses Verhalten gewährleistet eine konsistente und zuverlässige Nullterminierung und eignet sich daher für die Kompatibilität mit nullterminierten Zeichenfolgen im C-Stil.
Das obige ist der detaillierte Inhalt vonIst „std::string' von C 11 garantiert nullterminiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!