Heim >Backend-Entwicklung >C++ >Wie kann ich in C einen „std::string' mit eingebetteten Nullzeichen erstellen?
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.
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.-op"s; // Notice the "s" at the end.
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!