Heim > Backend-Entwicklung > C++ > Wie kann ich in C einen „std::string' mit eingebetteten Nullzeichen erstellen?

Wie kann ich in C einen „std::string' mit eingebetteten Nullzeichen erstellen?

Mary-Kate Olsen
Freigeben: 2024-11-29 08:06:10
Original
775 Leute haben es durchsucht

How Can I Create a `std::string` Containing Embedded Null Characters in C  ?

Erstellen eines std::string mit einer eingebetteten Null: Eine eingehende Untersuchung

Beim Erstellen eines std::string aus einem String-Literal, das eine eingebettete Null enthält B. „std::string my_string(“a\0b“);“, darf nur das erste Zeichen in der resultierenden Zeichenfolge vorhanden sein. Um dieser Herausforderung zu begegnen, können je nach verwendeter C-Version verschiedene Ansätze verwendet werden.

C 14 und höher

Ab C 14 erhielten String-Literale die Fähigkeit, Zeichen darzustellen, die eingebettete Nullen umfassen . Durch Anhängen des Suffixes „s“ an ein String-Literal kann es als std::string-Literal und nicht als C-String-Literal behandelt werden. Zum Beispiel:

std::string s = "pl-<pre class="brush:php;toolbar:false">std::string   x("pq\0rs");   // Two characters because input assumed to be C-String
std::string   x("pq\0rs",5); // 5 Characters as the input is a char array with 5 characters.
Nach dem Login kopieren
-op"s; // Notice the "s" at the end.

Lösungen vor C 14

Vor C 14 geht der std::string-Konstruktor, der ein char* akzeptiert, davon aus, dass die Eingabe ein C-String ist, was der Fall ist nullterminiert. Zum Ausgleich muss ein anderer Konstruktor verwendet werden, der ein char-Array und seine Länge akzeptiert:

Es ist wichtig zu beachten, dass std::string in C im Gegensatz zu C-Strings nicht nullterminiert ist. Die c_str()-Methode kann jedoch einen Zeiger auf einen internen Puffer bereitstellen, der eine nullterminierte C-String-Darstellung enthält.

Das obige ist der detaillierte Inhalt vonWie kann ich in C einen „std::string' mit eingebetteten Nullzeichen erstellen?. 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