Zeilenweise Einlesen bei Consolenprogramm
-
Hallo,
Ich habe zwei Fragen bezüglich des zeilenweisen Einlesen von Daten.
1. Ich habe ein Programm geschrieben, dass Eingaben des Benutzers einlesen soll. Diese Eingaben dürfen aber auch Leerzeichen erhalten, bsp. "Heinz Meier". Wenn ich nun mit der cin-Anweisung die Daten einlesen möchte, erhalte ich eine Crash. Ich benötige also eine einfach Möglichkeit solche Eingaben (mit Leerzeichen) einlesen zu können. Denke da an getline(), doch irgendwie klappt das nicht, bitte um ein Programmkonstrukt, danke.
2. Ich möchte aus einer Textdatei zeilenweise die Daten einlesen, wie mache ich dies am einfachsten mit ifstream datei(textdatei.txt)? Die Textdatei hat ungefähr den folgenden Aufbau:
- blupp ( Bla )
- bla ( blupp )Beim normalen Einlesen habe ich natürlich Probleme, wegen den Leerzeichen .etc, bitte auch hier um ein Programmkonstrukt als Beispiel, danke.
mfg
Pseudo
-
string line;
getline(cin, line);in der FAQ gibts noch mehr zu Ströme und Dateien.
-
Hallo,
Und beim Auslesen der Textdatei?
-
ifstream in("textdatei.txt"); string line; while(getline(in,line)){ cout<<line<<endl; }
-
Hallo,
Die einzelnen Zeilen sollten aber dann in einer einzigsten Variable vom Typ Strign gespeichert werden und nicht direkt ausgegeben werden.
-
Hallo,
Hat sich erledigt, danke.
mfg
Pseudo
-
Hallo,
Habe ein probelm, wenn ich die getline()-Funktion zweimal nacheinander einsetze.
Bsp. :
cout << "Name eingeben:";
getline(cin,strName);
cout << "Strasse eingeben:";
getline(cin,strStrasse);Ich erhalte dann immer nur den Wert des zweiten Aufrufs der getline()-Funktion.
Die Variable strName bleibt leer, wie kann ich dagegen Abhilfe verschaffen?mfg
Pseudo
-
Pseudo schrieb:
Ich erhalte dann immer nur den Wert des zweiten Aufrufs der getline()-Funktion.
Die Variable strName bleibt leer, wie kann ich dagegen Abhilfe verschaffen?glaub' ich nicht.
-
vielleicht ist vor getline(cin,strName); noch was im buffer? mal leeren und nochmal probieren.
was auch immer
-
Hallo,
Geht aber nicht, hier mein Code:
cout << "\Name: "; getline(cin,strUserEingabeName); cout << "\Strasse: "; getline(cin, strUserEingabeStrasse); strTemp = strUserEingabeName + " ( " + strUserEingabeStrasse + " ) "; oListe->setEintrag(strTemp);
Ich erhalte dann wenn ich strTemp ausgeben lasse: " ( Blupp ) ". Also nur den Teil strUserEingabeStrasse, vor der Klammer ist Leer, also demnach strUserEingabeName ist leer.
-
klingt nach wasauchimmer.
haste zurfällig vorher nen int gelesen? dann steht das abschließende return noch im stream.
-
nene, ist doch alles humbug
-
Hallo,
Lese vorher einen int-Werte ein das stimmt schon!
mfg
Pseudo