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::stringanstatt ein char-Array benutzen würdest, wäre das alles leichter.
Als Stichworte schau Dir malstd::stringundstd::getline(ohne cin) an.