char Array einlesen mit cin.getline



  • Hallo,
    Mein Problem ist eigentlich ganz simpel, dachte ich zumindest, bis es auftritt. Ich muss bei einer Konsolenanwendung ein Char-Array einlesen. Ich habe festgestellt, dass wenn ich normal mit cin einlese, also so:

    char ch[20];
    cin >> ch;
    

    dann list er sämtliche Zeichen ein, die ich eingebe. Wenn das jetzt mehr als 19 sind, dann schreibt er ja über den dafür reservierten Speicher hinaus, oder? Also dachte ich, ich ändere den Code folgendermassen.

    char ch[20];
    cin.getline(ch,20,'\n');
    

    das Problem ist nun, dass sich das cin.getline in einer Schleife befindet. Also wenn ich das Array eingelesen habe, werden einige Aktionen durchgeführt und anschliessend gelangt er wieder zu cin.getline. Das Problem ist nun folgendes: gebe ich weniger als 20 Zeichen ein, funktioniert das tiptop, gebe ich aber mehr ein, liest er automatisch, wenn er das zweite mal bei cin.getline angelangt ist liest automatisch wieder die selben zeichen ein, ohne dass ich etwas neues eingeben kann 😕 Kann mir da vieleicht jemand helfen?



  • Habe nun selber eine Lösunge gefunden. Ich lese einfach in einen String ein und schon hat sich mein overflow Problem gelöst.


Anmelden zum Antworten