Kapseln von sprintf in einer Methode
-
Hi,
ich möchte gerne sprintf kapseln über eine statische Methode in einer Util-Klasse. Die Methode soll einen Formatstring und eine Parameterliste bekommen und einen String zurückgeben. Die Schnittstelle sähe also in etwa so aus:
class CUtil { static std::string ToString(const std::string& format, ...); };Wie sieht aber die Implementierung aus?? Kann ich in etwa soetwas machen:
std::string CUtil::ToString(const std::string& format, ...) { static char buf[1024]; sprintf(buf, format.c_str(), ?????); return std::string(buf); }Wie man sieht, ist dort ein ?????. Was kommt dort hin?? Und gibt es ggf eine elegantere/bessere Lösung?? Ich finde leider nix im Forum bzw. bei google...
Vielen Dank schonmal,
Felix
-
ich empfehle mal man: vsprintf für diesen Zweck (recht weit unten auf der Manual-Seite ist auch ein Beispiel, wie man es verwenden kann).
-
Hallo,
du brauchst nicht sprintf zu kapseln, C++ bietet mit seinen stream Klassen weitaus elegantere Möglichkeiten, Zahlen in strings umzuwandeln (siehe auch hier).
Da, wo dein ??? steht, kommt die Variable hin, die umgeandelt werden soll, als z.B. ein int oder ein double. Das solltest du vllt. noch in die Parameterliste aufnehmen

MfG
GPC