while() nach cin fragen



  • moin 😃

    mal angenommen ich schreibe..

    int a;
    int x;
    int xx;
    while(cin>>a)
    {
    if(//eine bedingung^^)
    {
    //...
    } else if(//irgendetwas da da^^)
    {
    //...
    } else {
    //...
    }
    }
    

    ohne dabei auf die Kommentare usw.. zu schauen, ich möchte in while cin>>a machen,sodass wärend ich das eingebe,dass es auch so funktioniert,aber wie mache cih das am besten?

    thx im voraus^^

    wal.m.oo



  • Also so funktioniert das auf jeden Fall nicht. while() braucht ein Argument das entweder true oder false ist. D.h. du kannst entweder das cin>>a; vor die Schleife packen, und in den () das a gegen andere Werte prüfen, oder du kannst es in der Schleife machen und die Schleife while(true) machen was aber bedeutet das du in der Schleife irgendwo ein break; setzen must da sie sonst endlos wird. Wenn du jedoch nur ne if abfrage willst würde ich keine Schleife machen da sich das hier nicht lohnt.



  • wenn du nur die schleife durchlaufen willst, wenn du eine taste gedrückt hälst, musst du dafür wahrscheinlich was anderes als die stl benutzen, z.B: die win-api.
    oder du meintest das so:

    int a = 1;
    while( a )
    {
      cin >> a;
      // restl. code
    }
    

    //edit: oops, zu spät ...

    mfg,
    julian



  • Julian__ schrieb:

    wenn du nur die schleife durchlaufen willst, wenn du eine taste gedrückt hälst, musst du dafür wahrscheinlich was anderes als die stl benutzen, z.B: die win-api.
    oder du meintest das so:

    int a = 1;
    while( a )
    {
      cin >> a;
      // restl. code
    }
    

    //edit: oops, zu spät ...

    mfg,
    julian

    wozu ?

    while(cin>>a){
        if(a == x)
                break;
    ...
    }
    

    das ist genau das gleiche -.-



  • Raven2 schrieb:

    Also so funktioniert das auf jeden Fall nicht.

    Und genau deswegen funktioniert der obige Code auch - istream::op>> liefert den Stream zurück (einerseits für Operator-Ketten, aber auch für solche Statusabfragen), der wiederum nach als bool (genauer void*) in if()- und while()-Bedingungen genutzt werden kann. Das bedeutet, die Schleife läuft so lange, wie gültige int-Werte eingegeben werden (danach wird das failbit von cin gesetzt und das setzt den Stream auf 'false').

    @walross: Was genau meinst du mit "sodass wärend ich das eingebe,dass es auch so funktioniert"?



  • CStoll schrieb:

    @walross: Was genau meinst du mit "sodass wärend ich das eingebe,dass es auch so funktioniert"?

    das frag ich mich auch schon seit gestern,
    kannst du mal etwas besser beschreiben ?



  • Schreib doch einfach

    char x;
    do
    {
     cin >> x;
    
    }while(x!=BLA);
    

Anmelden zum Antworten