Avatar ·

String-Formatierung in C++ wie sprintf: moderne und sichere Methoden

Hallo! Ich programmiere erst seit kurzem in C++ und bin auf ein Problem mit der String-Formatierung gestoßen. Früher habe ich in C sprintf verwendet:
char buffer[256];
sprintf(buffer, "Hallo, %s! Du bist %d Jahre alt.", name.c_str(), age);
Aber in C++ mit std::string ist das umständlich: man muss c_str() herumschleppen, einen Puffer mit fester Größe verwenden, und sprintf ist unsicher (Pufferüberlauf möglich). Ich habe snprintf ausprobiert – besser, aber immer noch umständlich. Ich weiß, dass es std::stringstream gibt, aber das ist zu ausführlich:
std::stringstream ss;
ss << "Hallo, " << name << "! Du bist " << age << " Jahre alt.";
std::string result = ss.str();
Das ist für einfache Fälle in Ordnung, aber wenn man Zahlen formatieren muss (Feldbreite, Genauigkeit, hex), wird das Schreiben von Pseudo-Code mühsam. Zum Beispiel, wie gibt man