Dem nächsten, der mir erzählt, Strings wären in Java nicht ganz selbsterklärend (was sich im Wesentlichen darauf beschränkt, dass es keine Primitives sind), dem lach ich ins Gesicht und verweise ihn auf diese gewachsene String/char/…-Welt in C++.
Also. Modulo weiterer Anwendungsfälle, die ich dann ergänze, scheint Textausgabe wie folgt ganz gut zu funktionieren. Ich wollte an der Stelle kein printf verwenden, weil ich jede Ausgabe (zentral) prefixen wollte. Vermutlich könnte man printf einfach wrappen, indem man dessen Signatur kopiert, egal:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <sstream> void println(std::string s) { std::cout << "[cpp:] " << s << std::endl; std::cout.flush(); } template <typename T> std::string str(const T & t) { std::ostringstream os; os << t; return os.str(); } // ... println("The answer is " + str( 42 ) + "."); |
Aber bitte auch an den Anfang der Datei, sonst werden die Funktionen nicht gefunden m(
Update: Schön (wenn auch ohne Prefix) ist auch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> void println() { std::cout << std::endl; std::cout.flush(); } template<typename T, typename... Args> void println(T t, Args... args) { std::cout << t; println(args...); } // ... println("The answer is ", 42, "."); |