Variable Parameterliste ...



  • Tach zusammen.

    Ich gebe auf der Konsole während der Laufzeit irgendwelche Strings aus, die teilweise mit diversen ints gespickt sind (z.B. "Client at socket 123 connected.", "Client at socket 123 requests file abc from document def" etc.). Mehrere Threads können diese Ausgaben tätigen, weshalb das Ganze über einen Mutex synchronisiert wird.
    Nun habe ich mich, bei aller Mühe, standardkonform zu arbeiten, nie mit cout anfreunden können und nutze printf aus <cstdio>, weil ich es einfach übersichtlicher finde.

    Nun wäre es nett, wenn mir jemand
    a) sagen könnte, ob variable Parameterlisten aus C noch in C++ gültig sind und, falls ja, ob damit dennoch irgendwelche Probleme/Risiken verbunden sind, die dringend davon abraten lassen, eine (die Synchronisation beinhaltende) Wrapperfunktion für printf zu schreiben.
    b) anhand eines Beispiels zeigen könnte, wie man sowas eleganter mit Streams löst - vielleicht laß ich mich ja doch endlich bekehren. 🙄 Problem dabei ist, daß ich meine Strings zwecks späterer Übersetzung in Konstanten aufbewahre und gerne auf einzelne Schnipsel, die dieselbe Ausgabe betreffen verzichten würde (also im Falle des zweiten Beispiels ganz oben, je einen String mit "Client at socket", "requests file" und "from document").

    Vielen Dank schonmal im Voraus.

    P.S.: Ich hoffe, ihr versteht, was ich meine... 😕



  • a) sind noch erlaubt, nur wenn du versuchst nicht POD-Typen zu übergeben, wirst du dein blaues wunder erleben
    b)

    const char * const text1="text: "
    std::cout << text1 << 123 << " blöb\n";
    

    oder was meinst du?



  • btw. vielleicht solltest du anstelle printf dir mal Boost::Format angucken, weil das eine Typesafe Printf Like Formatierung erlaubt.



  • Wow, das ging schnell! 🙂

    Nee, wie cout funktioniert, weiß ich ja. Ich meinte, wie man meine komplette Problematik OHNE variable Parameterliste lösen könnte - und da ist Boost::Format genau das Richtige. Ich sollte mir echt mal angewöhnen, erst in die Boost-Lib zu schauen - immer wieder überraschend, das gute Stück. 😉

    Vielen Dank.


Anmelden zum Antworten