+ Antworten
Ergebnis 1 bis 5 von 5
  1. #1
    mGa
    mGa ist gerade online
    Kapitän zur See
    Registriert seit
    07.01.2004
    Beiträge
    3.235


    Standard C++: while(cin >> i) Problem

    Hallo Leute,

    ich bin gerade daran einen Vector mit Integers zu füllen. Dies realisiere ich über eine while-Schleife:
    Code:
    while(cin >> iZahl) {
                vZahlen.push_back(iZahl);
            }
    Das Problem ist nun, wenn ich eine falsche Eingabe mache, also z.B. "a" was ja keine ganze Zahl ist, beendet er mir das gesamte Programm. Wie kann ich das Abfangen? Vielen Dank schonmal.


    Gruß Marc
    Intel i5 2500K; 4400MHz ; 1,288V ; wassergekühlt #
    ASRock Z68 Extreme3 Gen3; Z68 ; 100MHz #
    4GB G.Skill ECO Series; 800 MHz ; 7-8-7-24 1T ; 1,379V #
    Sparkle 8800GTS 512MB; 770 MHz ; 1945 MHz ; 2230 MHz ; wassergekühlt #

  2. #2
    Hauptgefreiter Avatar von pointX
    Registriert seit
    14.12.2009
    Ort
    BaWü
    Beiträge
    192


    • Systeminfo
      • Motherboard:
      • altes P4 Board
      • CPU:
      • P4 @ 3,0 ghz
      • Kühlung:
      • boxed :(
      • Gehäuse:
      • standard Gehäuse
      • RAM:
      • 1,5 gig @DDR1
      • Grafik:
      • Radeo X1650
      • Storage:
      • 120gig @ 500 extern
      • Monitor:
      • 19" TFT
      • Netzteil:
      • NoName...... uralt
      • Betriebssystem:
      • XP
      • Photoequipment:
      • Canon Kompaktkamera

    Standard

    Das Zauberwort heißt Exception. Einfach per try-catch abfangen.
    Google

    Code:
    while(cin >> iZahl) 
    {
      try
      { 
          vZahlen.push_back(iZahl); 
      } 
      catch(...) 
      {
          cout << " Es ist ein fehler aufgetreten !"; 
      } 
    }
    Geändert von pointX (12.11.11 um 18:14 Uhr)
    2500K, Z68-V, Team 8GB 1333, 1TB Samsung F3, Ninja 3, CM-500W

    <codec> root kann mein heim zerstören, mich aus dem system aussperen. Aber nur Gott allein entscheidet, ob ich nach /dev/null/ oder nach /var/log/ komme

  3. #3
    mGa
    mGa ist gerade online
    Kapitän zur See
    Registriert seit
    07.01.2004
    Beiträge
    3.235
    Themenstarter


    Standard

    Der Fehler wird doch nicht von dem push_back geworfen, sondern vom cin oder liege ich da falsch?
    Intel i5 2500K; 4400MHz ; 1,288V ; wassergekühlt #
    ASRock Z68 Extreme3 Gen3; Z68 ; 100MHz #
    4GB G.Skill ECO Series; 800 MHz ; 7-8-7-24 1T ; 1,379V #
    Sparkle 8800GTS 512MB; 770 MHz ; 1945 MHz ; 2230 MHz ; wassergekühlt #

  4. #4
    Hauptgefreiter Avatar von pointX
    Registriert seit
    14.12.2009
    Ort
    BaWü
    Beiträge
    192


    • Systeminfo
      • Motherboard:
      • altes P4 Board
      • CPU:
      • P4 @ 3,0 ghz
      • Kühlung:
      • boxed :(
      • Gehäuse:
      • standard Gehäuse
      • RAM:
      • 1,5 gig @DDR1
      • Grafik:
      • Radeo X1650
      • Storage:
      • 120gig @ 500 extern
      • Monitor:
      • 19&quot; TFT
      • Netzteil:
      • NoName...... uralt
      • Betriebssystem:
      • XP
      • Photoequipment:
      • Canon Kompaktkamera

    Standard

    Kann gut sein, mit c++ kenne ich mich nicht so aus.
    Dann evt. iZahlText (String) als eingabe verwenden, und innerhalb der while-Schleife dann prüfen, ob iZahlText auch wirklich eine Zahl ist.
    2500K, Z68-V, Team 8GB 1333, 1TB Samsung F3, Ninja 3, CM-500W

    <codec> root kann mein heim zerstören, mich aus dem system aussperen. Aber nur Gott allein entscheidet, ob ich nach /dev/null/ oder nach /var/log/ komme

  5. #5
    Oberleutnant zur See Avatar von m0rf
    Registriert seit
    11.02.2006
    Beiträge
    1.349


    Standard

    Es ist egal, wer die Exception wirft, bzw. wo sie geworfen wird, so lange du sie an der für dich richtigen Stelle fängst.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein