0Pricing
C++ Academy · Lektion

Eingaben sicher mit getline lesen

Verwenden Sie std::getline für die zeilenweise Eingabe und validieren Sie Benutzereingaben, bevor Sie sie verwenden.

Eingaben sicher mit getline lesen ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum sichere Eingaben wichtig sind

Benutzereingaben sind die häufigste Ursache für Abstürze. Ein falscher Typ, eine leere Zeile oder unerwartete Zeichen können ein naives Programm zum Absturz bringen. Robustes Einlesen ist daher unverzichtbar.

Grundlagen von std::getline

std::getline(stream, line) liest Zeichen bis zum nächsten Zeilenumbruch. Der Zeilenumbruch wird gelesen, aber nicht gespeichert.

std::string line;
std::getline(std::cin, line);

Benutzerdefinierte Trennzeichen

Übergeben Sie ein drittes Argument, um beim Auftreten eines beliebigen Zeichens — nicht nur eines Zeilenumbruchs — anzuhalten.

std::string field;
std::getline(std::cin, field, ',');

Numerische Eingaben validieren

Lesen Sie zunächst die gesamte Zeile und analysieren Sie sie anschließend. Dadurch vermeiden Sie den Fehlerzustand von cin bei fehlerhaften Eingaben.

std::string line;
int n;
if (std::getline(std::cin, line)) {
    try {
        n = std::stoi(line);
    } catch (...) {
        std::cout << "Invalid number\n";
    }
}

Bis zu einer gültigen Eingabe wiederholen

Kombinieren Sie getline und try/catch, um so lange erneut nachzufragen, bis der Benutzer eine gültige Eingabe macht.

int age;
while (true) {
    std::cout << "Age: ";
    std::string line;
    std::getline(std::cin, line);
    try {
        age = std::stoi(line);
        if (age >= 0 && age < 150) break;
    } catch (...) {}
    std::cout << "Try again.\n";
}

EOF mit getline erkennen

getline versetzt den Stream bei EOF in den Fehlerzustand. Prüfen Sie den Stream nach dem Aufruf.

std::string line;
while (std::getline(std::cin, line)) {
    process(line);
}

Leerraum entfernen

Benutzer geben häufig versehentlich zusätzliche Leerzeichen ein. Entfernen Sie nach dem Einlesen den Leerraum an beiden Enden.

void trim(std::string& s) {
    size_t start = s.find_first_not_of(" \t\r\n");
    size_t end   = s.find_last_not_of(" \t\r\n");
    s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
}

Den Stream leeren

Wenn Sie >> und getline kombinieren, entfernen Sie zuerst die übrig gebliebenen Zeichen.

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Mehrere Werte pro Zeile einlesen

Lesen Sie die gesamte Zeile ein, übergeben Sie sie anschließend an einen stringstream und extrahieren Sie die Werte.

std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
int a, b, c;
iss >> a >> b >> c;

Schutz durch maximale Länge

Lehnen Sie zu lange Eingaben frühzeitig ab, um eine unbeabsichtigte Erschöpfung von Ressourcen zu verhindern.

std::string line;
if (std::getline(std::cin, line) && line.size() > 1024) {
    std::cout << "Input too long.\n";
    return 1;
}

Passwörter oder verborgene Eingaben lesen

Die Standardbibliothek blendet eingegebene Zeichen nicht aus. Verwenden Sie für Passworteingaben plattformspezifische APIs wie termios unter Unix oder SetConsoleMode unter Windows.

Kurze Überprüfung

Warum ist es sicherer, mit getline zu lesen und anschließend zu analysieren, statt std::cin >> n zu verwenden?

Zusammenfassung

Lesen Sie Benutzereingaben mit std::getline ein, validieren oder analysieren Sie sie separat und entfernen Sie Leerraum. Fangen Sie Analysefehler mit try/catch ab und wiederholen Sie die Eingabe, bis Sie einen gültigen Wert erhalten. Setzen Sie den Stream zurück, wenn Sie Extraktion und zeilenweises Lesen kombinieren.

Häufig gestellte Fragen

Ist die Lektion „Eingaben sicher mit getline lesen“ kostenlos?

Ja — der vollständige Text von „Eingaben sicher mit getline lesen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Eingaben sicher mit getline lesen“?

Verwenden Sie std::getline für die zeilenweise Eingabe und validieren Sie Benutzereingaben, bevor Sie sie verwenden. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Eingaben sicher mit getline lesen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. std::cin und std::cout richtig verwenden
  2. Ausgaben mit iomanip formatieren
  3. Eingaben sicher mit getline lesen
  4. Arbeiten mit std::cerr und std::clog
← Zurück zu C++ Academy