Problem mit Rückgabe
-
Hallo, ich habe in C++ folgendes Problem:
Ich habe eine main.cpp, deren inhalt so aussieht:
int a; int b; int c;dann habe ich noch eine einlesen.cpp, die folgendes beinhaltet:
int einlesen() { int int1; int int2; int int3; ifstream datenstrom; string configpfad = "config\\test.txt"; datenstrom.open(configpfad.c_str(), ios::in); char inhalt[4]; datenstrom.getline(inhalt,4); int1 = atoi(inhalt); datenstrom.getline(inhalt,4); int2 = atoi(inhalt); datenstrom.getline(inhalt,4); int3 = atoi(inhalt); datenstrom.close(); }inhalt der test.txt:
123 456 789so. nun möchte ich, dass ich in meiner main.cpp die einlesen() aufrufe und die werte int1, int2 und int3 irgendwie auf a,b und c übertrage...wie mache ich das?
das problem ist nämlich dass jede funktion ja nur einen wert zurückgeben kann...als ich mein problem gegoogled habe hab ich gesehen dass es mit einem vector gehen soll, habe das aber nicht hinbekommen...
-
void einlesen(int &a, int &b , int &c) { ifstream datenstrom("config\\test.txt"); datenstrom >> a >> b >> c; }P.S.: Wo hast du denn das mit dem atoi her? Klingt nach einem abenteuerlichen Lehrmaterial.
P.P.S.: Und wie du siehst, lohnt es sich nicht mehr wirklich, eine extra-Funktion zu machen, wenn man es richtig macht. Die 2 Zeilen kannst du auch in's Hauptprogramm schreiben.
-
Hallo,
Danke für die antwort,aber ich glaube, du hast mich falsch verstanden:Ich möchte, dass die integer a,b und c aus meiner main.cpp die werte von int1, int2 und int3 aus der einlesen()-funktion annehmen, die wiederum den werten aus der textdatei entsprechen.
Im prinzip habe ich also drei integer, denen ich mittels einer funktion drei werte aus einer datei zuweisen will.
-
Und inwiefern tut mein Code nicht genau das?
-
na,a inwiefern gibt dein code denn nun die werte an die integer aus der main.cpp zurück?
-
Bco schrieb:
na,a inwiefern gibt dein code denn nun die werte an die integer aus der main.cpp zurück?
Lies dir mal etwas über Referenzen durch. Wenn du Referenzparameter benutzt, können auch die übergebenen Variablen innerhalb der Funktion verändert werden.
-
Achso, muss ich dann in meiner main.cpp einfach die Funktion mit einlesen(&a,&b,&c) aufrufen?
-
Bco schrieb:
Achso, muss ich dann in meiner main.cpp einfach die Funktion mit einlesen(&a,&b,&c) aufrufen?
Nicht ganz.
einlesen(a,b,c). Und folge wxSkips Rat bezüglich Referenzen, damit du solche Fehler vermeiden kannst.