variable Parameterliste mit c++ Streams?
-
Ist es möglich, variable Parameterlisten mit iostream zu benutzen?
Ich suche eine C++ Alternative zu vfprintf, werde aber nicht fündig
Hat da einer einen Tip?
Grüße,
KA
-
-
sowas gibt es nicht.
Wenn es dir aber einfach nur um die Möglichkeit geht, anhand eines Formatstrings zu formatieren, gibt es da was von boost.
-
Na toll, ich habs mir beinahe gedacht.
Ich würde ungern auf eine Fremdbibliothek umsteigen. Da kann ich auch wieder die alten C Funktionen nehmen, für einen Logger geht das noch in Ordnung, nervt aber trotzdem.
Soviel zum sauberen C++ programmieren.
Danke jedenfalls,
KA
-
Bau dir doch einen eigenen Logger-Stream und dann benutzt du ihn wie iostream einfach alles reinschieben mit <<
-
Ich weiss nicht genau wie du das meinst.
Das Problem ist, das eine va_list reinkommt und ich die Typen auflösen müsste. Ich bin allerdings nicht so der C++ Guru und weiss ehrlich gesagt nicht wie ich das machen sollte.
Könnte ich die Typen auflösen, ohne beim Methodenaufruf die Typen anzugeben, würde das mein Problem eigentlich lösen. Nur sollte die Lösung keine 180° Verrenkungen beeinhalten die unnötig lahmen, weil zum Teil intensiv geloggt werden soll.
Folgendes:
(va_list& Args) ... for (int i=0; i < iNumArgs; i++) m_OFOutput << " " << va_arg(Args, double);
Das Problem ist halt "va_arg(Args, [TYP])", weil ich den Typ hier angeben muss, ihn aber nicht kenne. Oder kann ich den auflösen?
-
KA schrieb:
Ich würde ungern auf eine Fremdbibliothek umsteigen. Da kann ich auch wieder die alten C Funktionen nehmen
Nein. Boost bietet Dir, was die C-Funktionen bieten, aber typsicher. Was willst Du mehr?
-
Jester schrieb:
Nein. Boost bietet Dir, was die C-Funktionen bieten, aber typsicher. Was willst Du mehr?
Variable Parameterlisten in der Standard Library
Evtl. geb ich Boost mal ne Chance. Scheint hier im Forum ja ziemlich beliebt zu sein.
-
Mach das. Was Du haben willst heißt übrigens boost::format
-
ich meinte:
logger << "asdf" << 5 << 10.4;
reicht das nicht?
-
Was spricht gegen einen ganz normalen ostream?