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 astd::format.fmtlib/fmt: una libreria che offre capacità di formattazione prima chestd::formatfosse 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.