Heim > Backend-Entwicklung > C++ > Wie kann ich ganzzahlige Benutzereingaben in C effektiv überprüfen?

Wie kann ich ganzzahlige Benutzereingaben in C effektiv überprüfen?

Patricia Arquette
Freigeben: 2024-12-07 02:47:14
Original
300 Leute haben es durchsucht

How Can I Effectively Verify Integer User Input in C  ?

Benutzereingaben als Ganzzahlen überprüfen

Problemstellung

In einem C-Programm ist es entscheidend, sicherzustellen, dass Benutzereingaben erfolgen liegt im erwarteten Format vor, insbesondere bei der Durchführung mathematischer Operationen. In diesem Artikel wird beschrieben, wie Sie feststellen können, ob die vom Benutzer bereitgestellte Eingabe eine Ganzzahl ist. Wenn die Eingabe keine Ganzzahl ist, fordert das Programm den Benutzer auf, eine gültige Ganzzahl erneut einzugeben.

Lösung

Es gibt zwei Hauptansätze, um Benutzereingaben zu überprüfen als ganze Zahl:

1. Mit cin.fail():

  • Lesen Sie die Eingabe mit cin >>.
  • Überprüfen Sie den Status des Eingabestreams mit if (cin.fail() ).
  • Wenn cin.fail() wahr ist, bedeutet dies, dass die Eingabe keine ist Ganzzahl.

2. Verwenden von std::getline und String-Manipulation:

  • Verwenden Sie std::getline(std::cin, theInput), um die Eingabe als String zu erfassen.
  • Überprüfen Sie die Zeichenfolge für jedes Zeichen, das keine Zahl ist, mit if (theInput.find_first_not_of("0123456789") != std::string::npos).
  • Wenn die Bedingung wahr ist, bedeutet dies, dass die Eingabe nicht numerische Zeichen enthält.

Implementierung

Unten finden Sie einen Codeausschnitt, der die std::getline- und String-Manipulation implementiert Ansatz:

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&amp;st);
    std::cout << inputAsInt << std::endl;
    return 0;
}
Nach dem Login kopieren

Dieser Code fordert den Benutzer kontinuierlich zur Eingabe einer Ganzzahl auf, bis eine gültige Ganzzahl eingegeben wird. Es behandelt Situationen, in denen der Benutzer nicht numerische Zeichen eingibt oder leere Eingaben vornimmt.

Das obige ist der detaillierte Inhalt vonWie kann ich ganzzahlige Benutzereingaben in C effektiv überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage