benutzerdefiniertes String-Literal, ist String null terminiert?

8

Wird die angegebene Zeichenfolge für benutzerdefinierte Zeichenfolgenliterale garantiert null terminiert, wenn ich die folgende Definitionsform verwende? Ich weiß, dass die Größe, die mit dem zweiten Parameter angegeben wird, ohne irgendeine Beendigung zählt, falls es welche gibt.

%Vor%

Wenn ich diese Version der Definition verwende, sehe ich kein Null-Beendigungszeichen!

%Vor%     
Klaus 27.06.2017, 12:01
quelle

1 Antwort

6
  

Benutzerdefiniertes Zeichenfolgenliteral, ist Zeichenfolge null beendet?

%Vor%

Ja. String-Literale sind null-terminiert und n zeigt auf ein solches String-Literal.

  

Wenn ich diese Version der Definition verwende, sehe ich kein Null-Beendigungszeichen!

%Vor%

Der Standard erlaubt keine String-Literal-Vorlagen. Es gibt das Dokument N3599 , das seine Ergänzung zum Standard vorschlägt, und Es war für C ++ 14 gedacht, aber es gab keinen Konsens und es wurde nicht Teil davon vom Standard noch nicht. GCC und Clang scheinen es zumindest bereits als Spracherweiterung implementiert zu haben.

Tatsächlich erhält die literale Operatorvorlage nicht das Nullzeichen als eines ihrer Argumente.

  

Vorschlag N3599:

     

Die verbleibenden Argumente sind die Code-Einheiten im Zeichenfolgenliteral ( ohne das abschließende Nullzeichen ).

    
user2079303 27.06.2017, 12:22
quelle

Tags und Links