Einsteigerfragen / iostream , c++-referenz....
-
Tagchen Leute,
Bin gerade dabei mich ein bisschen in C++ einzuarbeten.
Programmiere normalerweise Java und bin auf der Suche nach dem c++ Äquivalent zu Scanner.hasNext()...
bzw. wie kann ich es in c++ bewerkstelligen, dass das programm solange eingaben von der Konsole einliest, solange es was zum einlesen gibt.. im prinzip bis zu EOF....in Java geht das ganz einfach.
In c++ weiß ich jetz nicht mal wo ich sowas nachschauen kann weil ich auch eine schöne Dokumentation (so wie in Java) vermisse.... Wo gibts denn ne gute C++ Referenz bzw. wo schaut man nach?LG
-
Output fetched:
#include <iostream> using namespace std; int main() { int x; while(cin >> x) // As long as a number is read cout << x << endl; }
-
Das hier ist eine gute Referenz:
http://www.cplusplus.com/reference/und ifstream hat ebenfalls ein eof Mechanismus. Ist ein Flag und wird bei eof gesetzt. Man kann es aber auch so machen, wie brain.exe das gezeigt hat. Muss dann aber dran denken das wieder zu clearen, wenn man den Straem wieder brauchen will.
btw:
Ich würde für den Einstieg eher ein gutes Anfängerbuch empfehlen. C++ hat trotz Syntaktischer Ähnlichkeit nicht viel mit Java zu tun. Und man sollte allse von Anfang an nochmal durcharbeiten. Du brauchst dich dann nicht lange mit Sachen, wie Schleifen/Funktionen zu beschäftigen (also der Sinn davon usw. ) aber Syntax und Fälle, wo es nicht das gleiche ist, wie in Java sind halt schon wichtig.. Gab schon Leute hier, die Java Code direkt in C++ rüber nehmen wollten.. Kompiliert hat es, aber funktioniert nicht.
-
Danke für die Antworten.
Ich würde für den Einstieg eher ein gutes Anfängerbuch empfehlen. C++ hat trotz Syntaktischer Ähnlichkeit nicht viel mit Java zu tun. Und man sollte allse von Anfang an nochmal durcharbeiten. Du brauchst dich dann nicht lange mit Sachen, wie Schleifen/Funktionen zu beschäftigen (also der Sinn davon usw. ) aber Syntax und Fälle, wo es nicht das gleiche ist, wie in Java sind halt schon wichtig.. Gab schon Leute hier, die Java Code direkt in C++ rüber nehmen wollten.. Kompiliert hat es, aber funktioniert nicht.
Ja, ein Buch hab ich mir schon bestellt (http://www.amazon.de/Master-Class-Einstieg-für-Anspruchsvolle/dp/3827323681)

Es wird wohl das beste sein, wenn ich mir das durchackere, da ich schon gemerkt habe dass es bei vielen Sachen einfach grobe prinzipielle unterschiede zu Java gibt. Es geht gar net um die "großen" sachen. Bin schon ziemlich erfahren was OOP seitens Java angeht. Bei vielen Sachen gilt es nur sich die Syntax anzuschauen.....Mal schaun wies läuft.. den Garbage-Collector vermiss ich schon ein bissl
auch finde ich die Java Syntax sehr viel "schöner" aber das is gewöhnungssache... Mehrfachvererbung ist cool
das gabs in Java in dieser form nicht..das wurde teilweise mit interfaces umgangen ....danke nochmal an euch beiden

servus
-
cryps schrieb:
Bei vielen Sachen gilt es nur sich die Syntax anzuschauen.....
es glt eben genau das nicht. Wenn du dir nur die Syntax anschaust läufst du gefahr, Java-artige Programme in C++(-Syntax) zu schreiben. Hinter Java und C++ stecken aber an vielen Stellen verschiedene Philosophien, die es zu unterscheiden gilt.
C++ mit Java-Denken zu programmieren ergibt in etwas so was grausames wie das berühmte "Denglisch", wenn jemand urdeutsch denkt und das 1:1 ins englische übersetzt...
-
cryps schrieb:
Mal schaun wies läuft.. den Garbage-Collector vermiss ich schon ein bissl
auch finde ich die Java Syntax sehr viel "schöner" aber das is gewöhnungssache... Mehrfachvererbung ist cool
das gabs in Java in dieser form nicht..das wurde teilweise mit interfaces umgangen ....danke nochmal an euch beiden

servus
Hehe. Den GC.. jaja.. In C++ reicht es meistens, wenn du einen Smart Pointer zur Hand nimmst. Der räumt dir den Speicher auch auf und das nicht erst, wenn er Lust hat, sondern zu einem definierten Zeitpunkt.
Und naja.. Mehrfachvererbung.. Das ist so eine Sache in C++.. Wird kaum benutzt und das aus den Gründen, warum modernere Sprachen, wie C# das nicht auch eingeführt haben.
Was richtig cool ist in C++, sind templates.

Und ja genau. Das was pumuckl sagt, solltest du dir schon zu Herzen nehmen. Probier in C++ nicht, wie in Java zu programmieren, sondern gewöhn dich an den C++-way. Dann hast du es auch um einiges leichter.
-
es glt eben genau das nicht. Wenn du dir nur die Syntax anschaust läufst du gefahr, Java-artige Programme in C++(-Syntax) zu schreiben. Hinter Java und C++ stecken aber an vielen Stellen verschiedene Philosophien, die es zu unterscheiden gilt.
weshalb ich mir auch ein buch gekauft habe

nd ja genau. Das was pumuckl sagt, solltest du dir schon zu Herzen nehmen. Probier in C++ nicht, wie in Java zu programmieren, sondern gewöhn dich an den C++-way. Dann hast du es auch um einiges leichter.
werd ich mir zu Herzen nehmen

-
spricht etwas gegen:
while(!cin.eof()) { ... }?
-
cryps schrieb:
spricht etwas gegen:
while(!cin.eof()) { ... }?
Aus reiner C++-Sicht nicht. Ist nur die Frage wann/wie bei der Standardeingabe ein EOF erreich werden soll...
-
cryps schrieb:
spricht etwas gegen:
while(!cin.eof()) { ... }?
Ja: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=eof#Answ
pumuckl schrieb:
Ist nur die Frage wann/wie bei der Standardeingabe ein EOF erreich werden soll...
Auf der Shell mit Strg+D. Ausserdem kann stdin auch mit einer Pipe, einem Socket oder einer Datei verbunden sein.