Ok thx. Also wenn ich das richtig verstanden habe ist printf schneller, aber mit cout kann man mehr machen.
So ist es. Ich habe dazu nie Benchmarks gemacht, aber die Laufzeit ist trivial.
printf stammt aus der C Library, diese kann vollständig in C++ genutzt werden (unter C inkludiert man stdio.h, unter C++ nutzt man die cstdio). Diese Funktion gibt eine Zeichenkette standardmäßig auf stdout aus (printf ist äquivalent zu fprintf(stdout, "", ...).
cout wurde mit C++ eingeführt und ist ein Stream-Objekt. Es gibt die Zeichenketten ebenso standardmäßig auf stdout aus. Prinzipiell ist es egal ob du nun printf oder cout nutzt. cout hat aber einen entscheidenden Vorteil:
Du kannst in C++ Operatoren überladen und so zum Beispiel Folgendes machen:
Code:
class myClass {
friend std::ostream &operator<<(std::ostream& ostr, myClass& mc);
public:
myClass(int value) {
_i = value;
}
private:
int _i;
};
std::ostream &operator<<(std::ostream& ostr, myClass& mc) {
return ostr << "Der Wert ist " << mc._i;
}
So, nun ist der Operator << überladen, wodurch Folgendes erlaubt wird:
Code:
int main() {
myClass cl(5);
std::cout << cl << std::endl; // Ausgabe: 'Der Wert ist 5'
return 0;
}
Unterm Strich ist es egal ob du nun die Old-School-C-Library nutzt, oder C++-Streams. Ich programmiere viel C/C++ und bin noch bei der C-Lib hängen geblieben, da ich das über die Zeit sehr stark verinnerlicht habe. Wenn du wirklich stark Wert auf Laufzeit legst, dann fährst du mit reinem C besser, aber IMHO kommt man nicht an Klassen vorbei, also kann ich einen reinen Einsatz von C nicht empfehlen.
Als ich angefangen habe zu programmieren, war mir der Unterschied zwischen C und C++ auch nicht ganz klar. Was ich dir da empfehlen kann, ist dich mit einer reinen C Lektüre zu begnügen (z.B. C von A bis Z, Galileo Openbook) und anschließend auf C++ umzusteigen (C++ von A bis Z ist zu empfehlen, aber leider nicht als Openbook erhältlich).
andersrum.
als faustregel kann man glaube sagen; man sollte immer die c++ methode waehlen wenn man die wahl hat. also z.b. auch std::string nehmen statt char*, exceptions statt ruckgabecodes, "konstante variablen" statt #define, usw.
Die std::strings sind IMHO fürn Arsch. Diese Dinger überlaufen ständig und werfen irgendwelche wirren Exceptions. Schreib dir 'ne eigene Klasse "String", dadurch lernst du auch direkt was

Exeptions in C++ werden mir nicht konsequent genug eingesetzt. Außerdem erzeugen sie massig Overhead. Ich bin immer noch Freund von Rückgabewerten. An dieser Stelle muss ich Java loben, immerhin meckert der Compiler, wenn eine Ausnahme nicht gefangen wird.
Konstanten sind aber tatsächlich Defines vorzuziehen.