Heim > Backend-Entwicklung > C++ > Wie drucke ich std::strings mit printf richtig?

Wie drucke ich std::strings mit printf richtig?

Barbara Streisand
Freigeben: 2024-12-26 11:11:11
Original
888 Leute haben es durchsucht

How to Correctly Print std::strings with printf?

So verwenden Sie printf mit std::string

Beim Versuch, printf mit einem std::string zu verwenden, kann es zu Problemen kommen unerwartetes Verhalten, wie z. B. das Drucken scheinbar zufälliger Zeichenfolgen anstelle des beabsichtigten std::string-Werts.

Dies tritt auf, weil printf ein ist C-Funktion, die mit Zeichenfolgen im C-Stil arbeitet, während std::string ein C-Objekt ist, das dynamisch zugewiesenen Speicher verwaltet. Um dies zu beheben, gibt es mehrere Ansätze:

Verwendung von std::cout:

Die einfachste Lösung ist die Verwendung von std::cout, das die Operatorüberladung für unterstützt std::string, sodass Sie es direkt drucken können:

std::cout << "Follow this command: " << myString;
Nach dem Login kopieren

Using c_str():

Wenn Sie den nullterminierten String im C-Stil aus std::string extrahieren müssen, können Sie die c_str()-Methode verwenden:

printf("Follow this command: %s", myString.c_str());
Nach dem Login kopieren

Mit std::format:

Für modernes C (C 20 und höher) können Sie davon profitieren std::format, das eine typsichere und vielseitige Möglichkeit zum Formatieren von Zeichenfolgen bietet:

std::cout << "Follow this command: " << std::format("{}", myString);
Nach dem Login kopieren

Verwendung von Variadic-Vorlagen:

Wenn Sie mehr Kontrolle über die benötigen Für das Ausgabeformat können Sie die Verwendung von Variadic-Vorlagen in Betracht ziehen. Allerdings gibt es in der Standardbibliothek keine integrierte Funktion ähnlich wie printf, die variadische Vorlagen verwendet.

Verwendung von Boost.Format:

Boost bietet eine reine Header-Bibliothek namens Boost.Format, das eine alternative Möglichkeit bietet, eine printf-ähnliche Formatierung mithilfe verschiedener Vorlagen durchzuführen.

Das obige ist der detaillierte Inhalt vonWie drucke ich std::strings mit printf richtig?. 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