tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
596
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    tipster tipster ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    3
    Hallo!

    Ich hab ein merkwürdiges Problem und kann mir nicht erklären woran es liegt. Folgendes simples Progamm:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    #include <iostream>
    #include <string>
    #include <cctype>
    using namespace std;
     
    int menu();
     
    int main()
    {
        int test = 0;
     
        while(test != 'B')
        {
            test = menu();
        }
     
        return 0;
    }
    int menu()
    {
       static char menuStr[] =
       "\n\n             B = Beenden des Programms"
       "\n\n Ihre Wahl:  ";
     
       cout << menuStr;
       char wahl;
       cin.sync(); cin.clear(); // Nur neue Eingabe
       if( !cin.get(wahl))
          wahl = 'B';
       else
          wahl = toupper(wahl);
     
       cin.sync();              // Eingabepuffer löschen
       return wahl;
    }

    Mein Problem ist nun wenn ich es mit g++ kompiliere und starte reagiert die Eingabe ganz komisch. Wenn ich exemplarisch den Wert 'a' eingebe wird die Schleife nicht einmal durchgegangen wie erwartet, sondern es wird sofort ein zweites Mal mit einem Leerwert durchgegangen (siehe Anhang). Die Schleife geht also immer einmal mehr als gewollt mit irgendwelchen Werten durch als würde noch etwas im istream hängen. Wenn ich dieses Programm unter Visual Studios starte funktioniert alles wie gewollt. Ich würde allerdings gerne mit Netbeans und dem g++ Compiler entwickeln und hoffe daher das mir jemand dieses Verhalten erklären kann und mich aufklärt was ich falsch mache Ich danke im Voraus!

    lg
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken g++ Compiler-console.png  
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Welche Version von g++ hast du denn? (g++ --version) MinGW oder Cygwin?

    Mit der 4.5.0 MinGW und der 4.3.0 MinGW Version hab ich hier keine Probleme und dein Programm funktioniert.

    Mit dem Cygwin g++ 4.3.4 gibt es das von dir beschriebene Problem.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    tipster tipster ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    3
    Hi!

    Danke für die Antwort! Genau es handelt sich um den cygwin 4.3.4 Compiler. Weißt du an was das liegen könnte oder sollte ich einfach zum MinGW wechseln?

    lg
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Vermutlich liegt es an der zugrundeliegenden Implementierung der Ein/Ausgabeströme die unter Cygwin mit Pipes realisiert ist.

    Wenn du nicht wirklich Cygwin als UNIX-Kompatibilitätsschicht benötigst, dann wechsle doch einfach zu MinGW.

    Du könntest statt sync() auch ignore() verwenden um den Rest einer eingegebenen Zeile zu ignorieren:
    Code cpp:
    1
    2
    3
    
    inline ::std::istream& ignore_line(::std::istream& in) {
      return in.ignore(::std::numeric_limits<::std::streamsize>::max(), '\n');
    }
    Oder du liest immer eine komplette Zeile ein und verarbeitest diese.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. c-Compiler für mac
    Von GAILTALER im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 11.04.08, 15:30
  2. OS-Compiler
    Von Kyoko im Forum Sonstige Sprachen
    Antworten: 13
    Letzter Beitrag: 15.02.05, 20:19
  3. c++ Compiler
    Von Martin Schroeder im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 11.10.04, 19:27
  4. compiler
    Von Pardon_Me im Forum Coders Talk
    Antworten: 7
    Letzter Beitrag: 10.02.04, 19:53
  5. Compiler
    Von Hannes im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 0
    Letzter Beitrag: 10.02.01, 21:04