PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einlesen mit cin


Räuber Hotzenplotz
2006-04-04, 15:38:00
Wir sollen hier auf der Uni ein kleines Programm schreiben, und zwar einen Stack-Taschenrechner (soll modular um neue funktionen erweiterbar sein)

Des Design steht vorläufig, und ich wollte mich ans coden machen, aber ich stehe vor folgendem Problem: (ich sollte dazu anmerken, das ich C++ anfänger bin)

Der Beutzer kann sowohl double werte (die Zahlen eben mit denen zu rechnen ist) als auch char eingeben (die Operatoren) und das in bel. reihenfolge und kombination. (jede eingabe wird aber mit enter bestätigt)


double Zahl;
char Zeichen;

while(true)
{
std::cin >> Zahl;

if (std::cin.fail())
{
.
.
.



Kann ich irgendwie den eingabebuffer von cin auslesen, wenn ich über cin.fail() rausgefunden hab, dass die Eingabe keine Zahl ist? und den dann in einen char schreiben?

Hat sonst jemand eine andere Lösung oder einen Hinweis? (ich denke mal so ein problem sollte öfter auftreten)

thx

Hotzi

Trap
2006-04-04, 16:09:18
Ich würde komplette Zeilen lesen und dann mit stringstreams arbeiten.

Also so:
string x;
getline(cin,x);
istringstream myin(x);
myin >> whatever;
Hat den Vorteil, dass man sich im weiteren Code nichtmehr darum kümmern muss cin wieder in einen benutzbaren Zustand zu bringen.

Oder einfach nur zeilenweise lesen und für den Rest einen Parsergenerator benutzen.

Räuber Hotzenplotz
2006-04-05, 13:51:37
thx für den tipp, haben das so implementiert.