Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Wenn ich ein charfeld mit cin.getline() einlese und dann ein anderes charfeld wieder mit cin.getline() einlese, wieso liest er nur beim ersten mal das charfeld ein?? Das zweite charfeld wird dann irgendwie nicht eingelesen... was habe ich falsch gemacht??

Danke schon einmal im voraus...

Geschrieben

ich ahb hei mal den code reingeknackt.

C_Mensch::C_Mensch()

{

strcpy(Name,"leer");

Alter=0;

Geschlecht=true;

Familienstand=true;

}


C_Mensch::C_Mensch(char *name,int alter, bool geschlecht, bool familienstand)

{

strcpy(Name,name);

Alter=alter;

Geschlecht=geschlecht;

Familienstand=familienstand;

}


void C_Mensch::set()

{

char a;

cout<<"Bitte Namen eingeben: "; cin.getline(Name,20);            [COLOR="Red"]//hier das erste mal[/COLOR]

cout<<"Bitte Alter eingeben: "; cin>>Alter;

do

{

cout<<"Bitte Familienstand eingeben(l/v): ";

cin>>a;

if(a=='l')

{

Familienstand=true; break;

}

else

{

if(a=='v')

{

Familienstand=false; break;

}

else cout<<"Falsche Eingabe! Erneute Eingabe!"<<endl;

}

}while(1);

do

{

cout<<"Bitte Geschlecht eingeben(m/w): ";

cin>>a;

if(a=='m')

{

Geschlecht=true; break;

}

else

{

if(a=='w') 

{

Geschlecht=false; break;

}else cout<<"Falsche Eingabe! Erneute Eingabe!"<<endl;

}

}while(1);

}


void C_Mensch::show()

{

cout<<"\n\nAusgabe der Daten"<<endl;

cout<<"+++++++++++++++++"<<endl;

cout<<"\n Name: "<<Name<<endl;

cout<<"Alter: "<<Alter<<endl;

if(Familienstand)

{

cout<<"Familienstand: ledig"<<endl;

}

else cout<<"Familienstand: verheiratet"<<endl;

if(Geschlecht) cout<<"Geschlecht: maennlich"<<endl;

else cout<<"Geschlecht: weiblich"<<endl;

}


bool C_Mensch::Ehe(C_Mensch human)

{

if(Alter>=18)

{

	if(human.Alter>=18)

	{

		if(Familienstand==true)

		{

			if(human.Familienstand==true)

			{

				if(Geschlecht!=human.Geschlecht) return true;

			}else return false;

		}else return false;

	}else return false;

}else return false;

}



void C_Mensch::operator++()

{

Alter++;

}



C_Schueler::C_Schueler()

{

C_Mensch::C_Mensch();

Snummer=0;

strcpy(Datum,"01.09.00");

}


C_Schueler::C_Schueler(int nummer,char* date,char* name, int alter, bool sex, bool stand):C_Mensch(name,alter,sex,stand)

{

Snummer=nummer;

strcpy(Datum,date);

}


void C_Schueler::set()

{

C_Mensch::set();

cin.unget();

cout<<"Bitte Schuelernummer eingeben: "; cin>>Snummer;

cout<<"Bitte Datum eingeben (tt.mm.jj): "; cin.getline(Datum,8);                [COLOR="#ff0000"]//hier das 2.mal , hier funktioniert es nicht[/COLOR]

}


void C_Schueler::show()

{

C_Mensch::show();

cout<<"\nSchuelernummer: "<<Snummer;

cout<<"\nDatum: "<<Datum;

}

Geschrieben

Das Problem ist vermutlich, dass nach einem cin << das Zeilenendezeichen noch im Eingabepuffer liegt, und damit der nächsten Aufruf von getline einen leeren String erkennt.

Das sollte sich beheben lassen, indem du vor jedem Aufruf von getline folgendes einfügst:

cin.ignore(cin.rdbuf()->in_avail());

Damit löschst du alles, was noch im Eingabepuffer liegt.

Geschrieben

also...ich hatte das letzte cin.getline() mit cin ersetzt....dadurch funktionierte es auch...aber sobald das cin.getline() ein 2. mal verwendet wird funktioniert es nicht...er überspringt einfach die datumeingabe....

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...