Quote:
Warum haben soviele was gegen:
using namespace std; ?
|
Im globalen namespace ist das imho ein no-go!
Ich persönlich mag es nicht, da es dir den globalen namespace regelrecht zumüllt, wenn du ersteinmal mit der ganzen STL arbeitest. "stack", "vector", "map", u.v.m., alles Namen, die du nicht mehr nutzen kannst.
Im worst case kann es dazu kommen, dass der Compiler bestimmte Symbole nicht auflösen kann und somit das Programm nicht erstellt wird.
So Tippe ich lieber 5 Zeichen mehr auf der Tastatur, was bei mir keine halbe Sekunde dauert, als dass ich am Ende auch nur eine unnötige Minute Fehler behebe, die von vorne herein unnötig waren.
Ratsamer ist es, die einzelnen Klassen, die du nutzen möchtest, in den entsprechenden Funktionen über "using <Namespace>::<Klassenname>;" zu nutzen.
Bzw. bin ich inzwischen soweit, dass ich mir ein Makro geschrieben habe, um das Verhalten von scoped namespaces aus C# zu erhalten, was den Quellcode (imho) nochmal ein gutes Stück leserlicher gestaltet. Aber so weit musst du nicht gehen!
Nochmal zur Verdeutlichung:
Quote:
Wer mit C++ arbeitet, der sollte auch keine (bzw. so wenig wie möglich; bzw. nur in bestimmten Szenarien) C-Funktionen nutzen. Die STL wurde ja nicht zum Spaß eingeführt!

std::cin.get(); hat die gleiche Funktionalität wie getchar. Gibt man mehr als nur ein Return ein, muss man den Eingabestream flushen, da dir sonst das nächste std::cin.get() scheinbar einfach übersprungen wird.
Ich persönlich favorisiere hier den string Header ebenfalls zu inkludieren und dann über std::getline wirklich eine Zeile einzulesen.
Code:
std::getline(std::cin, std::string()); //ließt sauber eine Zeile ein!
Könnte man zwar als unsauberen workarround bezeichnen (mimimi, ungenutzter Speicher wird reserviert), aber es erfüllt seinen Zweck hervorragend!
So far,
Night