cin.get()



  • #include <String.hpp>
    #include <iostream>
    using namespace std;
    
    class xBoundary
    {
          public:
          xBoundary() {}
          ~xBoundary() {}
    };
    
    int main()
    {
        const float faktor = 2.54;
        float x, in, cm;
        char c;
        char *ch = &c;    
    
        cout << "Bitte eine Laenge eingeben: ";
        cin >> x;
        cin.get(ch, 1);
        switch(*ch)
        {
                  case 'i':
                       in = x;
                       cm = x * faktor;
                       break;
                  case 'c':
                       in = x/faktor;
                       cm = x;
                       break;
                  default:
                  in = 0;
                  cm = 0;
                  break;
        }
    
        cout << in << " in = " << cm << " cm\n";
    
        return 0;
    }
    

    Kann mir jemand erklären, warum das nicht funktioniert ? mit dem cin.get(ch, 1) will ich erreichen, dass er nur den 1. buchstaben einliest und den rest ignoriert, wenn der user mehr eingibt... d.h. wenn der user "innnn" eingibt, soll das als "i" gewertet werden, sodass NICHT 0 in = 0 cm angezeigt wird... sobald ich das mit cin.get() eingebaut hab zeigt er das allerdings IMMER an, auch wenn ich "434 i" eingeb, was mit cin >> ch vorher funktioniert hat.. hmm



  • #include <String.hpp> 
    #include <iostream>
    #include <conio.h>
    ...
        cout << "Bitte eine Laenge eingeben: "; 
        *ch = getch();
        switch(*ch) 
        { 
                  case 'i': 
    ...
    

    //edit: code ein bischen gekürzt dargestellt



  • Gah! Ihr immer mit eurem getch(). Warum getch(), wenns so hübsche Alternativen gibt, die das DOS-I/O nicht brauchen?

    Wie auch immer. In diesem Fall wäre die einfachste Lösung wohl

    cin >> x >> c;
    

    zum einlesen zu benutzen.



  • weil 'getch()' in dem fall auch funktioniert ( im gegentum zu cin>>x>>C; ) 😃


Anmelden zum Antworten