std::string und Ersetzungsplatzhalter
-
Hi...
Bisher war ich mit std::string immer sehr zufrieden, doch jetzt komme ich an eine Stelle, an der die C-Char-Arrays ihre Vorteile zeigen (zumindest meiner Ansicht nach):void x(char *pszText, ...) { char szBuffer[128] = { '\0' }; va_list vaParameters; va_start(vaParameters, pszText); vsprintf(szBuffer, pszText, vaParameters); va_end(vaParameters); // tu was mit szBuffer } x("Hallo %s, du bist %i Jahre alt und bist %0.2fm groß!", "Peter", 18, 1.85);Mit std::string scheint das ganze mehr als nur kompliziert zu sein:
void x(const std::string &strText) { // tu was mit strText.c_str() } std::stringstream strTemp; strTemp << "Hallo " << "Peter" << ", du bist " << 18 << " Jahre alt und bist " << 1.85 /*einfaches umformen mit %0.2f entfällt*/ << "m groß!"; x(strTemp.str());Geht das nicht auch einfacher? Am besten wäre natürlich ein Einzeiler.
Gruß
-
theliquidwave schrieb:
...
Mit std::string scheint das ganze mehr als nur kompliziert zu sein:...Mir nicht.
... und sicherer ist es auch noch.Ich würde also sagen: Ein schönes Beispiel dafür, wo std::string (&Co) seine Stärke ggü. char* ausspielen kann.

Gruß,
Simon2.
-
Sagen wir so... Formatierungs-Strings haben ihren Vorteil, wenn man die Anwendung Internationalisieren will...
Wenn du magst, kannst du dir mal Boost Format anschauen.
-
Ausserdem gibts ja auch noch Formatierungsbibliotheken:
Boost Format oder Fast Format...Simon