C++ getline macht probleme

phpMars

Erfahrenes Mitglied
Ich bin gerade bei OOP und wollte folgendes Programm zum einstieg mal machen, aber irgendwie habe ich Probleme mit meiner getline Funktion.

Code:
//----------------OOP - Konto--------------------
# include <iostream>
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# include <stdio.h>
# include <string>
# include <algorithm>
using namespace std;
//---------------Stephan Liebig 2005-------------

# ifdef WIN32
# ifdef __BORLANDC__
# include <conio.h>
# else

void clrscr(void) {
	system ("cls");
}
# endif
# else /* WIN32 */
void clrscr(void) { }
# endif


class Konto
{
private:
	int Kontonummer;
	string KtoInhaber;
	float Stand;

public:
	void setData();
	void getData();
};

void Konto::setData()
{
	cout << "Bitte geben Sie Ihre Kontonummer ein: ";
	cin >> Kontonummer;
	cout << endl << "Bitte geben Sie den Kontoinhaber ein: ";
	cin.getline >> KtoInhaber;
	cout << endl << "Bitte geben Sie den Kontostand ein: ";
	cin >> Stand;
}
void Konto::getData()
{
	cout << endl << "Ihre Daten: " << endl;
	cout << "Ihre Kontonummer: " << Kontonummer << endl;
	cout << "Kontoinhaber: " << KtoInhaber << endl;
	cout << "Ihr Kontostand: " << Stand << endl;
}

void main(void)
{
	Konto giro;
	giro.setData();
	giro.getData();

	getchar();
}

Kann mir jemand sagen wo der Fehler ist ?
 
Ja. Also:
Du benutzt
Code:
cin.getline >>
Das ist aber die Variante zum einlesen von c char Strings in der Fom
Code:
cin.getline(char* string, int size)
Du liest einen c++ String ein, dass machst du mit:
Code:
getline(cin, buffer)
Dann musst du noch Aufpassen, dass das vorher das letzte Return noch im Buffer ist, das wirst du ZB mit
Code:
cin.get()
lost.
Ahja eine main sollte int zuruecjgeben!
 
Was die main(); betrifft ist es hier egal, da ich keinen Rückgabewert erhalte, müsste ich return 0; verwenden und das kann ich mir ja mit void main(void) sparen
 
canuzzi hat gesagt.:
Dann musst du noch Aufpassen, dass das vorher das letzte Return noch im Buffer ist, das wirst du ZB mit
Code:
cin.get()
lost.
Ahja eine main sollte int zuruecjgeben!

Wie werde ich jetzt das überflüssige Return im Buffer mit cin.get() los? Das einzige was ich damit hinbekomme ist, daß das Programm auf ein Enter von mir wartet.
 
Code:
cin.ignore(cin.rdbuf()->in_avail());

Auf Deutsch: Liebes Cin, schaue mal in deinen Lesepuffer und ignoriere soviele Zeichen wie gerade da sind.

Das mit dem fflush lässt du in C++ besser sein das muss nicht immer klappen. Ist afaik eh net defined was da bei raus kommt wenn man iostreams verwendet.
 
Dankeschön, aber das fflush funktioniert bei mir irgendwie nicht. Ich hab eine Datei offen und will die auslesen. Getline schnappt sich aber die Zeilenumbrüche in der Datei und die landen in meinem Array. Da kann ich die "\n" aber überhaupt nicht gebrauchen. Warum ist das so schwer diesen Buffer clean zu bekommen bevor Getline loslegt? Hab mir jetzt was mit substr(1, array[z].name.length()) gebastelt und schneid das hinterher raus. :mad:
 
Zurück