Zeichenketten interpolieren

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: