1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Testen von STRG + D

  • master_fluc
  • 25. März 2007 um 14:41
  • Unerledigt
  • master_fluc
    6
    master_fluc
    Mitglied
    Punkte
    345
    Beiträge
    57
    • 25. März 2007 um 14:41
    • #1

    Hi,

    ich lese in meinem Programm immer zeilenweise mittels getline von der standardeingabe. Beendet werden soll es, wenn der User STRG+D (also EOF) eingibt.

    Code
    while(cin.good())
            {
                getline(cin,sInput);
                ...
    }

    ich kann doch annehmen, dass cin.good() false liefert, wenn jemand STRG+D (also EOF) eingibt, oder?
    Wie könnte ich es sonst prüfen?

    Better to reign in hell,
    than serve in heaven.
    (John Milton, Paradise Lost)

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 25. März 2007 um 14:44
    • #2

    Ja, liefert dann false.

  • master_fluc
    6
    master_fluc
    Mitglied
    Punkte
    345
    Beiträge
    57
    • 25. März 2007 um 15:20
    • #3

    hmm, es funktioniert aber nicht, da ich STRG + C beenden muss, um das Programm zu beenden ...

    Better to reign in hell,
    than serve in heaven.
    (John Milton, Paradise Lost)

  • Trux
    12
    Trux
    Mitglied
    Reaktionen
    26
    Punkte
    1.396
    Beiträge
    274
    • 25. März 2007 um 15:27
    • #4

    unter windows oder linux?
    bei windows isses afaik: strg+z

  • master_fluc
    6
    master_fluc
    Mitglied
    Punkte
    345
    Beiträge
    57
    • 25. März 2007 um 15:33
    • #5

    Super, danke, genau das wars :thumb:

    Better to reign in hell,
    than serve in heaven.
    (John Milton, Paradise Lost)

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 25. März 2007 um 17:10
    • #6
    Zitat von master_fluc

    Wie könnte ich es sonst prüfen?


    getline gibt ein istream-Objekt zurück, das du (mittels eingebautem operator void *) einfach in der while-Bedingung überprüfen kannst. Vergleiche:

    C
    #include <iostream>
    #include <string>
    
    
    int main(void)
    {
        std::string input;
        while (std::cin.good())
        {
            std::getline(std::cin, input);
            std::cout << "'" << input << "'" << std::endl;
        }
        return 0;
    }
    Alles anzeigen


    mit:

    C
    #include <iostream>
    #include <string>
    
    
    int main(void)
    {
        std::string input;
        while (std::getline(std::cin, input))
            std::cout << "'" << input << "'" << std::endl;
        return 0;
    }
    Alles anzeigen

    Die erste (deine) Variante wird, wenn du an einem Zeilenanfang end-of-file signalisierst, noch eine leere Zeile lesen; die zweite bricht richtigerweise ab.

    Das liegt daran, daß good() und ähnliches nicht vorausschauend ist; das EOF-Bit wird erst gesetzt, nachdem ein Leseversuch tatsächlich auf end-of-file getroffen ist, und nicht, wenn der nächste Leseversuch end-of-file finden wird. Die Überprüfung ist also nur sinnvoll nach einem Leseversuch, aber noch bevor du etwas mit dem Ergebnis machst. Wie im zweiten Beispiel.

    *plantsch*

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung