Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » cin.getline ist ungeduldig!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.09.2003, 18:00 Uhr
~rambo99
Gast


hallo welt !

warum kann das programm nicht warten, bis der user was hinter 'nachname:' eingegeben hat?!

cout << "\nNachname:";
cin.getline(antwort_chr,80);
cout << "\nVorname: ";
cin.getline(antwort_chr,80);
cout << "\nNummer: ";
cin >> antwort_i;

danke für Euer wissen !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.09.2003, 18:24 Uhr
virtual
Sexiest Bit alive
(Operator)


Keine Ahnung, funktioniert bei mir.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.09.2003, 18:34 Uhr
~rambo99
Gast


ja, es funktioniert schon, aber aus irgend nem grund macht es gleich mit vorname weiter -noch bevor jmd etwas als nachname eingeben kann :-(
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.09.2003, 18:43 Uhr
~(un)wissender
Gast


So funzt es defintiv!


C++:
#include <iostream>
using namespace std;

int main() {    
    char antwort_chr[80];
    char antwort_i[80];
    cout << "\nNachname:";
    cin.getline(antwort_chr,80);
    cout << "\nVorname: ";
    cin.getline(antwort_chr,80);
    cout << "\nNummer: ";
    cin >> antwort_i;
    return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.09.2003, 19:07 Uhr
~rambo99
Gast


ich nenn jetz einfach mal nähere umstände davon...
vielleicht könnt Ihr mir dann sagen, warumn der hase in die falsche richtung läuft...

das ganze wird aus einer switch anweisung heraus aufgerufen:

C++:
...
                case 1:
                        Eintragen();
                        break;
...


und sieht selbst so aus:

C++:
void Eintragen()
{
        int i, antwort_i, letzter_eintrag;
        char antwort_chr[80];
        letzter_eintrag=(Zaehlen()-1);
        i=(letzter_eintrag+1);
        cout << "\nNeuer Eintrag:";
        cout << "\nNachname: ";
        cin.getline(antwort_chr,80);
          strcpy(eintrag[i].nachname,antwort_chr);
        cout << "\nVorname: ";
        cin.getline(antwort_chr,80);
          strcpy(eintrag[i].vorname,antwort_chr);
        cout << "\nNummer: ";
        cin >> antwort_i;
          eintrag[i].nr=antwort_i;
        cout << "Eintrag #" << i << " wurde erzeugt\n";

}



--edit: Pablo. [ cpp ] tags gesetzt --

Dieser Post wurde am 30.09.2003 um 19:12 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.09.2003, 19:19 Uhr
0xdeadbeef
Gott
(Operator)


Meine einzige Vermutung wäre, dass der Output-Stream nicht geflusht wird. Dann müsste er aber, bevor er Nachname schreibt, noch einmal ein return verlangen...

Wenn es das ist, kriegst du es so umgangen:

C++:
cout << "Nachname: " << flush;
cin.getline(eintrag[i].nachname, 80);
cout << "Vorname: " << flush;
cin.getline(eintrag[i].vorname, 80);
cout << "Nummer: " << flush;
cin >> eintrag[i].nr;
cout << "Eintrag #" << i << " wurde erzeugt" << endl;


flush flusht den Stream, endl schreibt ein newline in den Stream und flusht ihn danach.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.09.2003, 20:11 Uhr
~rambo99
Gast


sehr komisch....
wie kann das sein, wenn es doch bei den anderen beiden abfragen ohne flush funktioniert?
werds bei gelegenheut mal probieren...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.10.2003, 10:46 Uhr
proga



Hatte das Problem auch, und vermute das noch etwas im Input-Stream steht. Mit cin.getline(eintrag[ i ].nachname, 80) wird anscheinend der Rest, der sich im Input-Stream befindet, eingelesen, darum macht das Programm direkt mit der nächten cout << - Anweisung weiter.

Kann man den Input-Stream auch irgendwie leeren, so wie man es bei dem Output-Stream macht?

Dieser Post wurde am 30.10.2003 um 11:02 Uhr von proga editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: