Nach Eingabe wird gar nicht erst gefragt! cin.geline()

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nach Eingabe wird gar nicht erst gefragt! cin.geline()

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. using namespace std;
    4. int main(int argc, char *argv[])
    5. {
    6. char charsetchars[100];
    7. char entering[100];
    8. unsigned short int enter;
    9. while (true)
    10. {
    11. cout << "+---+------------------------------------+" << endl;
    12. cout << "| 0 | Quit |" << endl;
    13. cout << "+---+------------------------------------+" << endl;
    14. cout << "| 1 | Enter Charset |" << endl;
    15. cout << "+---+------------------------------------+" << endl;
    16. cin >> enter;
    17. switch (enter)
    18. {
    19. case 1:
    20. cout << "enter the characters which shall be contained in the charset" << endl;
    21. cout << "enter 'exit' to go back to the menu" << endl;
    22. cin.getline(entering, sizeof(entering) / sizeof(char));
    23. if (strcmp(entering, "exit")) continue;
    24. strcpy(charsetchars, entering);
    25. cout << "Neuer Zeichensatz übernommen" << endl;
    26. break;
    27. default: break;
    28. }
    29. }
    30. return 0;
    31. }
    Alles anzeigen


    [Blockierte Grafik: http://scriptjunkies.bplaced.net/problem.png]
  • Liegt IMO daran, dass du die hälfte des Eingabebuffers noch nicht gelesen hast. (Windows Zeilenende ist ja "\r\n") Bei mir war das zweite Zeichen immer noch im Buffer und hat dort Probleme bereitet (IMO mit MinGW und auch mit VC)

    Lösung:

    Quellcode

    1. std::cin.clear();
    2. std::cin.ignore(std::cin.rdbuf()->in_avail());
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)