cin geht nicht

Theranium

Mitglied
Hallo Experten,

nach einigen Monaten beschäftige ich wieder mit c++. Jedenfalls versuch ich das.
Denn ich scheitere schon an einer vermeintlich einfachen Aufgabe:
Ich möchte eine Zahl in eine Variable eingeben, mit dieser etwas ausrechnen und das Ergebnis ausgeben. Mein Code:
Code:
#include <iostream>
using namespace std;

int main(void)
{
 int var;
 cout << " Gib eine Zahl ein: ";
 cin >> var;
 cout << "\n Deine Eingabe: " << var <<"\n";
 var += 5;
 cout << "\n Ergebnis: " << var <<"\n";
 return 0;
}
Die Ausgaben klappen wunderbar ... Nur wird der cin-Befehl einfach übersprungen. Das heißt das Programm gibt einfach von sich aus irgendwelche Zahlen aus. Ich habe auch mit cin.ignore() hreumexperimentiert. Mit fflush(stdin) soll das auch gehen, aber trotz einbinden von stdio wird fflush nicht gefunden.

Habt ihr eine Idee?
 
Also ich kopiliere das Ganze mit g++ (sprich ich nutze einen Linux-Compiler).

Code:
g++ -o test main.cpp

Dann rufe ich das mit ./test auf. Ich bi auch ziehmlich sicher dass der Code richtig ist. Ich habe mittlerweile auch den Compiler auf den neusten Stand gebracht - Keine Änderung.
 
Also ich kopiliere das Ganze mit g++ (sprich ich nutze einen Linux-Compiler).

Code:
g++ -o test main.cpp

Dann rufe ich das mit ./test auf. Ich bi auch ziehmlich sicher dass der Code richtig ist. Ich habe mittlerweile auch den Compiler auf den neusten Stand gebracht - Keine Änderung.
Das Programm ist jedenfalls OK und der Compiler ist es mit Sicherheit auch.

Gibst du denn auch wirklich eine Zahl ein?

\edit: Probier mal
Bash:
echo 123 | ./test
Was kommt raus?

Gruß
 
Zuletzt bearbeitet:
Zunächst 23, dann 28. Das Ding ist ja, dass ich nicht mal dazu komme etwas einzugeben. Das Programm wartet gar nicht auf eine Eingabe.
 
Da ich Emacs als Editor dafür nutze und der auch gleich die Möglichkeit bietet, Shell-Kommandos auszuführen nehme ich nicht den Umweg über die Konsole. Das dürfte allerdings das gleiche sein. Ich probier das mal nur über die Konsole.
 
Unglaublich: Aus irgendwelchen Gründen besteht tatsächlich ein Unterschied zwischen der Kompilierung direkt in Emacs (gleicher Befehl) und der in der Konsole.

Jetzt gehts!!

Faszinierend ;-)

Danke für deine Hinweise!
 
Es lag nicht an der Kompilierung sondern einfach daran, dass ich das Programm auch in Emacs ausgeführt habe.

Den Fehler werd ich merken:rolleyes:
 
Unglaublich: Aus irgendwelchen Gründen besteht tatsächlich ein Unterschied zwischen der Kompilierung direkt in Emacs (gleicher Befehl) und der in der Konsole.
Es besteht kein Unterschied bei der Kompilierung (damit hat der Emacs ja nichts zu tun) aber bei der Ausführung. Du verwendest vermutlich die shell-command (M-!) Funktion, welche keine Eingaben zuläßt, sondern nur einen Befehl ausführt und die Ausgabe anzeigt. Siehe Dokumentation.

Du kannst aber den eshell Mode verwenden um eine interaktive Shell im Emacs zu starten.

Gruß
 
Zurück