Diese Funktion soll einen Bruch lesen und ihn in einem Array platzieren. Wenn der Benutzer '0' eingibt, soll die Funktion beendet werden. Ich versuche, dies mit der Funktion cin.peek() zu tun, aber die Ausführung geht immer in die if-Anweisung und erlaubt dem Benutzer nicht, zu beenden.Wie man richtig cin.peek() verwendet
Wie soll ich das richtig Code (ich bin offen zu nicht peek() verwenden, ich dachte, es wäre der einfachste Weg, es zu tun.)
Dank!
void enterFrac(Fraction* fracs[], int& index)
{
int n, d;
char c, slash;
cout << "Enter fractions (end by entering a 0): ";
c = cin.peek();
if (c != '0')
{
cin >> n >> slash >> d;
Fraction* f = new Fraction();
f->num = n;
f->den = d;
fracs[index] = f;
index++;
}
}
Dieser Test von peek() funktioniert jedoch:
#include <iostream>
using namespace std;
int main() {
char c;
int n;
char str[256];
cout << "Enter a number or a word: ";
c=cin.peek();
if ((c >= '0') && (c <= '9'))
{
cin >> n;
cout << "You have entered number " << n << endl;
}
else
{
cin >> str;
cout << " You have entered word " << str << endl;
}
return 0;
}
Ich fügte einen Fall hinzu, in dem ich peek() richtig arbeiten lassen kann, aber ich sehe nicht, was das Problem in meinem Fall verursacht. – Zzz