C++ getline macht probleme

Hi.
Micha139 hat gesagt.:
Funktioniert das auch wenn ich getline(streamobjekt, array[z].name, ':'); auf meinen IO-Stream loslasse oder funktioniert das nur mit cin?
Wenn du angibst, das ein Doppelpunkt dein Zeilenendezeichen ist, dann wird natürlich nicht mehr auf das '\n' geachtet und das ist ein ganz normales Zeichen und landet im String.

Eine Möglichkeit wäre erstmal komplett die Zeile in einen String einzulesen und dann die Zeile an den Doppelpunkten zu splitten.

Du kannst ja mal im Forum suchen da müßte irgendwo eine split Funktion für Strings definiert worden sein.

Gruß
 
deepthroat hat gesagt.:
Hi.
Du kannst ja mal im Forum suchen da müßte irgendwo eine split Funktion für Strings definiert worden sein.

So sieht auch meine Lösung mit substr() im Moment aus, nur daß ich den Zeilenumbruch rausschneide. Das einzige was funktioniert. Der Delimiter scheint das problem zu sein.

.....

Ach ja nochmal zum Buffer leeren ein cin.ignore(INT_MAX, '\n'); tuts ünrigens auch, aber auch das funktioniert bei meinem Streamobjekt nicht, also weiter cutten...

Aber wißt ihr was da funktioniert... streamobjekt.ignore(INT_MAX, '\n'); oder streamobjekt.get(); Das mußte doch irgendwie gehen...


Gruß
 
Zuletzt bearbeitet:
Wenn ich mit getline einen String einlesen will, sagt mir MS Visual C++ :

cpp(51) : error C3861: "getline": Bezeichner wurde nicht gefunden.

Mit dem Bezeichner ist der String gemeint nehme ich an. Was mache ich also falsch?

Code:
              string  eingabe;
			  size_t found;
                         getline(cin,eingabe);
						 found = eingabe.find("n");
                         
                         if( found == string::npos ) {
							werte[j] = eingabe - 0;
						 }
                         else {
							readingValues = false;
						 }
 
naja ... so wie ich das sehe machst du einen entscheidenden Fehler...

die Syntax sieht naemlich wie folgt aus

cin.getline(Variable, Zeichenanzahl)
 
Wenn ich mit getline einen String einlesen will, sagt mir MS Visual C++ :

cpp(51) : error C3861: "getline": Bezeichner wurde nicht gefunden.

Mit dem Bezeichner ist der String gemeint nehme ich an. Was mache ich also falsch?
Nein, mit dem Bezeichner ist der Bezeichner gemeint, der in der Fehlermeldung angegeben ist: getline. Du hast anscheinend vergessen den <string> Header, in der die getline Funktion definiert ist, mit zu include'n.

@Laudian: Was du meinst ist die getline Methode der istream Klasse, nützlicher ist aber die getline Funktion aus der <string> Headerdatei, weil man sich damit nicht um die Länge der Eingabe und Speicherallozierung kümmern muss.

Gruß
 
Zuletzt bearbeitet:
Prüf mal die includes:
Code:
#include <string>
#include <iostream>
using namespace std;
Übrigens, was bezweckst du mit
Code:
werte[j] = eingabe - 0
?
 
Zurück