Zeichenlänge begrenzen bei Eingabe



  • Hallo,

    wie bekomme ich es hin, dass nur eine Eingabe von 10 Zeichen geht ? Bei mir hängt sich das Programm immer auf, wenn ich über 10 Zeichen eingebe ?

    int SIZE=10;
    do{
    cin.getline (name_1, SIZE);
    }while(SIZE<10)
    


  • Genau so ein Snippet habe ich hier schonmal gesehen... das riecht stark nach Trollen.

    Nichtsdestotrotz: Es gibt keine direkte Möglichkeit nur 10 Zeichen einzugeben. Du kannst aber problemlos alle weiteren Zeichen ignorieren.



  • Trollen ????

    Mehr als 10 Zeichen werden ja auch ignoriert... Aber wie bekomme ich es hin, dass die Anweisung nochmals ausgeführt wird, wenn mehr als 10 Zeichen eingegebn werden ?



  • So z.B.:

    int main()
    {
        const size_t SIZE = 10;
        char buffer[ SIZE + 1 ]; //10 Zeichen + '\0'
    
        while( (!std::cin.getline (buffer, SIZE + 1) ) || (std::strlen(buffer) != 10) ) //Zu lang oder Laenge nicht 10
        {
            std::cout << "Error\n";
            if(!std::cin.good()) //Wenns zu lang war...
            {
                std::cin.clear(); //Fehlerbit loeschen...
                std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //... und Stream leeren
            }
        }
        std::cout << "Okay\n";
    }
    

    Wenn Du aber std::string anstatt ein char-Array benutzen würdest, wäre das alles leichter.
    Als Stichworte schau Dir mal std::string und std::getline (ohne cin) an.


Anmelden zum Antworten