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?

Linda Hamilton
Freigeben: 2024-12-01 02:38:11
Original
831 Leute haben es durchsucht

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

Erstellen eines std::string mit eingebetteten Nullzeichen

Problem:

Beim Versuch um einen std::string mit einer Zeile zu konstruieren, die ein eingebettetes Nullzeichen ( ) enthält, z als:

std::string my_string("a<pre class="brush:php;toolbar:false">#include <iostream>
#include <string>

int main()
{
    using namespace std::string_literals;

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

nur das Zeichen vor dem Nullzeichen bleibt erhalten. Wie können wir eine Zeichenfolge mit eingebetteten Nullzeichen richtig konstruieren?

Lösung:

Seit C 14

C 14 eingeführt String-Literale, die die direkte Erstellung von std::strings mit eingebetteten Nullzeichen mithilfe von s ermöglichen Suffix:

Vor C 14

Vor C 14 gingen std::string-Konstruktoren davon aus, dass die Eingabe eine Zeichenfolge im C-Stil war, die mit a endet Nullzeichen. Um eingebettete Nullzeichen zu verarbeiten, verwenden Sie den Konstruktor, der ein char-Array und eine Länge akzeptiert:

Hinweis: std::strings sind nicht von Natur aus nullterminiert. Die c_str()-Methode stellt jedoch einen Zeiger auf einen internen Puffer bereit, der einen C-String mit dem Null-Terminator 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