C++:
Zeichenketten interpolieren
How to:
C++ hat keine eingebaute String-Interpolation wie einige andere Sprachen, aber wir können ähnliche Funktionalitäten mit std::ostringstream
oder fmt-Bibliothek (C++20) erreichen:
#include <iostream>
#include <sstream>
#include <fmt/core.h> // C++20 benötigt
int main() {
int year = 2023;
std::string event = "Kurs";
// Mit std::ostringstream
std::ostringstream oss;
oss << "Willkommen im " << year << " " << event << "!";
std::cout << oss.str() << std::endl;
// Mit fmt-Bibliothek (C++20)
std::string msg = fmt::format("Willkommen im {0} {1}!", year, event);
std::cout << msg << std::endl;
return 0;
}
Sample Output:
Willkommen im 2023 Kurs!
Willkommen im 2023 Kurs!
Deep Dive
Historisch gesehen hatte C++ keine direkte Unterstützung für String-Interpolation, im Gegensatz zu Sprachen wie Python oder Ruby. Vor C++20 mussten Entwickler mit String-Streams (std::stringstream
) oder manuellen String-Zusammenführungen arbeiten, was oft umständlich war.
Die fmt
-Bibliothek, inkludiert in C++20, bringt Python-ähnliche String-Interpolation. Alternativ können auch externe Bibliotheken wie boost::format
oder fmtlib
vor C++20 verwendet werden.
Die Implementierung der String-Interpolation erfolgt üblicherweise durch das Parsen des String-Literals und das Ersetzen der Platzhalter mit den entsprechenden Variableninhalten. Die fmt
-Bibliothek nutzt dabei ein kompaktes Format und bietet zusätzliche Formatierungsoptionen.
See Also:
Hier sind einige Ressourcen, für tiefergehende Informationen:
- fmtlib Dokumentation – die fmt-Bibliothek für moderne C++-String-Interpolation.
- C++20 Features – Informationen zu den Neuerungen in C++20.
- std::ostringstream – Dokumentation über string streams in C++.