Eine Fragen zu C++



  • Skym0sh0 schrieb:

    edit : zu spät -.-

    Von wegen "edit". Du hast nichts editiert. Troll.



  • Danke für die Antwort pumuckl.
    Zu Frage 3: Gibt es denn eine Plattformunabhängige Bibliothek, oder ratet ihr mir, es einfach sein zu lassen?


  • Mod

    Herbert Rüpel schrieb:

    Danke für die Antwort pumuckl.
    Zu Frage 3: Gibt es denn eine Plattformunabhängige Bibliothek,

    Leider nein.

    oder ratet ihr mir, es einfach sein zu lassen?

    Mach ruhig, wenn du Spaß dran hast. Ist nicht sehr kompliziert und erlaubt dir, hübsche Sachen zu machen. Wenn es ums Lernen der Sprache geht, kann man aber sicherlich nützlicheres machen, als das Aussehen der Ausgabe zu optimieren.



  • Hallo,
    ich bins nochmal mit einer Frage.
    Ich habe mir zum sicheren einlesen einer Zahl jetzt diese Funktion geschrieben:

    unsigned ReadNumber() {
    	unsigned buffer = 0;
    	do {
    		std::cin.clear();
    		std::cin >> buffer;
    	} while (std::cin.fail());
    	return buffer;
    }
    

    Leider bleibt mein Programm da immer in einer Endlosschleife hängen, wieso?



  • Herbert Rüpel schrieb:

    Hallo,
    ich bins nochmal mit einer Frage.
    Ich habe mir zum sicheren einlesen einer Zahl jetzt diese Funktion geschrieben:

    unsigned ReadNumber() {
    	unsigned buffer = 0;
    	do {
    		std::cin.clear();
    		std::cin >> buffer;
    	} while (std::cin.fail());
    	return buffer;
    }
    

    Leider bleibt mein Programm da immer in einer Endlosschleife hängen, wieso?

    Weil das failbit nicht gesetzt wird. Die Schleife ist vollkommen in Ordnung. Und schreib lieber "unsigned int", jeder der deinen Code später lesen wird ist dankbar.


  • Mod

    Kóyaánasqatsi schrieb:

    Und schreib lieber "unsigned int", jeder der deinen Code später lesen wird ist dankbar.

    Ich habe keine Ahnung, inwiefern diesbezüglich ein Konsenz besteht, würde aber unsigned ohne int immer vorziehen. Kürze=Würze. Die Syntax ist schon barock genug, da kann man schon etwas sparsam sein. Es steht sonst zu befürchten, dass andernfalls bei den Bezeichnern gespart wird.



  • 😮
    Kürze = Unleserlichkeit



  • Herbert Rüpel schrieb:

    Hallo,
    ich bins nochmal mit einer Frage.
    Ich habe mir zum sicheren einlesen einer Zahl jetzt diese Funktion geschrieben:

    unsigned ReadNumber() {
    	unsigned buffer = 0;
    	do {
    		std::cin.clear();
    		std::cin >> buffer;
    	} while (std::cin.fail());
    	return buffer;
    }
    

    Leider bleibt mein Programm da immer in einer Endlosschleife hängen, wieso?

    Probiers hiermit (und ja ich bin zu faul immer std:: davor zu schreiben 😃 ):

    int ReadNumber() {
        int buffer = 0;
        do {
            cin.clear();
            cin.ignore(static_cast<streamsize>(INT_MAX), '\n');
            cin >> buffer;
        } while (cin.fail());
        return buffer;
    }
    

    Das schmeißt deine vorherigen Zeichen aus dem stream, der sonst eine Endlosschleife produzieren würde bzw. immer wieder den gleichen Fehler. Diese Lösung geht allerdings nur mit int und long (daher int anstelle von unsigned).

    Ansonsten kann ich da nur auf die Folien meines (ehemaligen) Dozenten verweisen, die das ganz gut erklären:

    http://harald-brandenburg.de/prog2/EinUndAusgabeInC++1.pdf



  • @Holymagic
    Am Besten du liest dir nochmal die vorherigen Posts durch.



  • @Holymagic
    Danke für den Ruck in die richtige Richtung.
    Mit einem altbekannten

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

    klappt es natürlich universel.

    @Kóyaánasqatsi
    Hör auf zu trollen, deine Posts haben einen Informationsgehalt von 0 😉


Anmelden zum Antworten