Wie man cin.peek () richtig benutzt

Diese Funktion soll einen Bruch lesen und 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 erfolgt immer in der if-Anweisung und erlaubt dem Benutzer nicht, das Programm zu verlassen.

Wie sollte ich das richtig codieren? (Ich bin offen dafür, peek () nicht zu verwenden. Ich dachte, es wäre die einfachste Art, das zu tun.)

Vielen 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;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage