Interpolazione di una stringa

C++:
Interpolazione di una stringa

How to:

C++ moderno offre diverse strade per interpolare stringhe. Vediamone un paio:

Con std::format (C++20 in poi):

#include <format>
#include <iostream>
#include <string>

int main() {
    std::string name = "Mondo";
    int year = 2023;
    std::string greeting = std::format("Ciao, {}! Siamo nell'anno {}.", name, year);
    std::cout << greeting << std::endl;
    return 0;
}

Output:

Ciao, Mondo! Siamo nell'anno 2023.

Con ostringstream:

#include <sstream>
#include <iostream>
#include <string>

int main() {
    std::ostringstream oss;
    std::string name = "Mondo";
    int year = 2023;
    oss << "Ciao, " << name << "! Siamo nell'anno " << year << ".";
    std::string greeting = oss.str();
    std::cout << greeting << std::endl;
    return 0;
}

Output:

Ciao, Mondo! Siamo nell'anno 2023.

Deep Dive:

Prima di C++20, i programmatori spesso usavano sprintf o concatenazione manuale, che era complicata e incline ad errori. std::format semplifica enormemente interpolazione, con una sintassi chiara e flessibilità.

Alternative:

  • boost::format: se non hai C++20, Boost fornisce una soluzione simile a std::format.
  • fmtlib/fmt: una libreria che offre capacità di formattazione prima che std::format fosse aggiunto allo standard.

Dettagli implementativi: std::format usa un approccio “type-safe” e previene molti degli errori comuni che si verificavano con sprintf. Questo metodo permette anche di formattare tipi definiti dall’utente (UDT) tramite la personalizzazione delle specializzazioni di std::formatter.

See Also: