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.
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!