sprintf in C++
-
Warum? Kann man irgendwas in ner normalen Methode nicht machen, was man in nem überladenen Operator machen kann? Überladene Operatoren sind doch auch nur Methodenaufrufe mit etwas anderer Syntax.
-
Shade Of Mine schrieb:
nur ein Wort: iomanip
waren das nicht die tollen manipulatoren für streams?
damit kann man dann endlich
cout << setw(4) << iVal; cout << " 0x" << hex << uppercase << setprecision(2) << setfill('0') << setw(2) << hVal; cout << setfill(' ') << dec; // reset things cout << " Testfile: [" << setw(10) << filename << "]"; cout << " user: [" << setw(10) << left << username << right << "]"; cout << "\n"; cout << "Trial " << setw(8) << fixed << setprecision(2) << fValue; cout << endl;schreiben statt
printf("%4d 0x%02X Testfile: [%10s] user: [%-10s]\nTrial %8.2f \n", iVal, hVal, filename, username, fValue);ja, die haben ein problem nit ToString(). deswegen bieten solche sprachen für zahlen gleich auch ein Format() an, anstatt es gleich hübsch zu machen.
(code geliehen von http://www.daniweb.com/forums/thread73939.html )
-
Wirklich toll ist das was man mit iomanip machen kann ja auch nicht, gerade mal ein bisschen Zahlen formatieren. Und konsistent ist das ganze auch nicht. Wenn man was mit Zeit und Datum machen will, braucht man zusätzlich time_put facet, weil da das was am stream mit iomanip hängt nicht viel bringt. Für alles irgendwelche iomanip oder ähnliches am stream kleben zu haben ist natürlich auch zuviel. Da find ich für einfache Texte toString und für Formatierung dann Number- oder DateFormat schon konsistenter.
Kann eigentlich printf number und date format mit internationalisierung ohne zusätzliche "externe" funktionen, also nur mit "%d9.4..." zeugs?
-
hallo gehts schrieb:
Kann eigentlich printf number und date format mit internationalisierung ohne zusätzliche "externe" funktionen, also nur mit "%d9.4..." zeugs?
Nein.
Davon abgesehen gibt es dennoch bessere Alternativen zu der printf-Familie, auch für die, die keine Streams mögen. Siehe z.B. boost::format.
-
volkard schrieb:
waren das nicht die tollen manipulatoren für streams?
Um ehrlich zu sein, ich habe noch kein schoenes System fuer Formatspezifizierungen gefunden.
Die printf-Syntax hat zB als Vorteil die kompaktheit und ist oft eine gute Wahl fuer simple Sachen. Fuer komplexe Sachen muss man oefters mal in eine Doku sehen.
Die iomanip sind leichter verstaendlich aber aetzend einzusetzen.
Die C# Methode mit der eigenen Klasse fuer die String Formatierung.
Alles irgendwie nicht wirklich schoen

-
Shade Of Mine schrieb:
Um ehrlich zu sein, ich habe noch kein schoenes System fuer Formatspezifizierungen gefunden.
[...]
Alles irgendwie nicht wirklich schoen
jup, jetzt isses ausgesprochen worden.

-
Wie sähe denn euer Ideal aus?

-
Nexus schrieb:
Wie sähe denn euer Ideal aus?

ich bin zu dumm, um es zu finden. und viele andere auch, scheint mir. vielleicht gibt es keine angenehme lösung. vielleicht erfindet in dieser minute jemand was tolles. vielleicht erst in 81 jahren und ich darf es nicht mehr erleben.